Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

matheusmarson

Exibir pedido e seu último status

Recommended Posts

Senhores



Preciso fazer uma consulta sql onde devo pegar todos os pedidos realizados e o seu ultimo status


Tenho 2 tabelas


Pedidos (id, valor, frete, cliente) e de status (id, status, data, id_pedido)



Preciso listar todos os pedidos e seu ultimo status


Resolvi temporariamente com usando subquerys mas fica muito lento devido a quantidade de pedidos



Tentei com a query:


SELECT p.id, p.data_pedido, valor_pedido, valor_frete, MAX(ps.data_acao) as data_acao, MAX(ps.status_pedido) as status_pedido, MAX(ps.id) as ultimo_status

FROM pedidos p, pedidos_status ps

WHERE p.id_cliente='$id_usuario' AND ps.id_pedido=p.id

GROUP BY p.id

ORDER BY p.id DESC


Desta maneira está me retornando os pedidos e todos os seus status.

Oque eu queria seria apenas o último status de cada pedido


Tentei também com inner join e o retorno é o mesmo, ou seja lista todos os pedidos e todos os status deste pedido


Alguém saberia me falar como fazer isso?



Valew


Compartilhar este post


Link para o post
Compartilhar em outros sites
Somente adicionei uma subquery para encontrar o ultimo status do id:
SELECT p.id, p.data_pedido, valor_pedido, valor_frete, ps.data_acao as data_acao, ps.status_pedido as status_pedido, ps.id as ultimo_status
FROM pedidos p, pedidos_status ps
WHERE p.id_cliente='$id_usuario' AND ps.id_pedido=p.id AND ps.data = (SELECT MAX(data) FROM pedidos_status WHERE id = ps.id)
GROUP BY p.id
ORDER BY p.id DESC

Veja se resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As tabelas pedidos e pedidos_status tem índices ?

As estatísticas estão atualizadas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a #2 deveria funcionar e ser relativamente rápida então

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.