JefFlash 0 Denunciar post Postado Setembro 24, 2014 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? Compartilhar este post Link para o post Compartilhar em outros sites
XoooM 0 Denunciar post Postado Setembro 24, 2014 Da um order by pela data desc juntamente com um first 1. Ex: SELECT FIRST 1 * FROM tabela ORDER BY data DESC Compartilhar este post Link para o post Compartilhar em outros sites
JefFlash 0 Denunciar post Postado Setembro 24, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites
XoooM 0 Denunciar post Postado Setembro 24, 2014 Entendi. Já tentou dar um GROUP BY? Acho que apenas isso iria resolver seu problema. Compartilhar este post Link para o post Compartilhar em outros sites
JefFlash 0 Denunciar post Postado Setembro 24, 2014 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. Compartilhar este post Link para o post Compartilhar em outros sites