Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal, tenho a seguinte necessidade:
Fiz uma conexão com o banco de dados firebird através do php e estou gerando um array com os pedidos dos clientes.
Acontece que neste relatório de pedidos eu preciso de 2 colunas, uma com o nome do cliente e outra com a data da última compra. Devido a forma como o erp (lixo diga-se de passagem) salva os dados, no cadastro do cliente não tem a data da última compra, então minha alternativa será listar todos os pedidos por data, ligados aos clientes e nesse esse array com os clientes e datas de compra selecionar de cada cliente apenas a compra mais atual e exibir apenas uma vez cada cliente.
Atualmente meu script está conseguindo listar todos os clientes, só que as linhas com o nome do cliente ficam repetidas pois são vários pedidos para o mesmo cliente e do lado, tenho as datas de compra, pra resumir: preciso pegar o registro de data mais atual de cada cliente e não exibir os demais.
Como faço isso, ajuda por favor?
/applications/core/interface/imageproxy/imageproxy.php?img=http://oi61.tinypic.com/sosr2d.jpg&key=12baad25c06470d02be4c88aee4a83395c8baac5bdcd56db6511aeb99d2112f1" alt="sosr2d.jpg" />
>
Da um order by pela data desc juntamente com um first 1.
Ex: SELECT FIRST 1 * FROM tabela ORDER BY data DESC
Obrigado amigo, mas tentei assim e só retorna a primeira linha. Preciso da primeira linha de cada cliente... vou tentar fazer uma função que consulta o conjunto dos pedidos de cada cliente a cada registro do array e ver se funciona, mas estou pensando também em desempenho...
Valeu, abraços.
Entendi. Já tentou dar um GROUP BY? Acho que apenas isso iria resolver seu problema.
Entendi. Já tentou dar um GROUP BY? Acho que apenas isso iria resolver seu problema.
Consegui resolver fazendo o seguinte: usei uma consulta simples onde lista todos os clientes com seus id e razão social. Depois criei uma função que pega um argumento passado, consulta os pedidos relacionados ordenado pela data asc e volta só a primeira linha usando a função que você passou. Aí para cada registro a função é executada passando o id e então é retornado a data da última compra.
Muito obrigado pelo seu exemplo, estava utilizando o limit 0,1 pois uso no mysql, mas não funcionava no firebird. Valeu mesmo, até mais.
Da um order by pela data desc juntamente com um first 1.
Ex: SELECT FIRST 1 * FROM tabela ORDER BY data DESC