santos_s 12 Denunciar post Postado Abril 19, 2015 Boa tarde, Estou querendo retorna o valor máximo de cada nome; sendo que a consulta vai me trazer vários nomes; esse é meu sql com parte do meu código: $sql_vol_atual = mysql_query("SELECT * FROM semar_acomp_reser WHERE nome_acomp_reserv LIKE '$pesq_nome_reserv' ORDER BY nome_acomp_reserv DESC LIMIT 1"); $result_vol_atual = mysql_fetch_assoc($sql_vol_atual); $vol_atual=$result_vol_atual['vol_atual_acomp_reser']; echo $vol_atual a consulta está me trazendo o ultimo valor do ultimo nome para todos os nomes na tabela está assim: nome1=14.360; nome2=0.790; nome3=0,280 está me retornando assim: nome1=0,280 nome2=0,280 nome3=0,280 mais se faço a consulta individual me retorna o valor correto. []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 19, 2015 Pelo que eu entendi ... SELECT nome_acomp_reserv , max(vol_atual_acomp_reserv) max FROM semar_acomp_reser WHERE nome_acomp_reserv LIKE '$pesq_nome_reserv' Group by nome_acomp_reserv ORDER BY 2 desc DESC LIMIT 1"); Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 20, 2015 @Mota, não me retornou nada com resultado: $sql_vol_atual = mysql_query("SELECT nome_acomp_reserv , max(vol_atual_acomp_reser) max FROM semar_acomp_reser WHERE nome_acomp_reserv LIKE '$pesq_nome_reserv' Group by nome_acomp_reserv ORDER BY 2 DESC LIMIT 1"); se colocar SELECT *, max... me retorna somente o menor valor para todos os nomes. []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 20, 2015 Creio então não ter entendido o problema. Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 20, 2015 na tabela tenho o seguinte: cod_acomp_reserv | nome_acomp_reserv | vol_atual_acomp_reserv | data_acomp 1 reservatorio1 1.500 15/03/2015 2 reservatorio2 5.623 10/03/2015 3 reservatorio3 2.568 08/03/2015 4 reservatorio1 1.000 30/03/2015 5 reservatorio3 3.000 01/04/2015 tenho que exibir a última atualização. reservatorio1 1.000 reservatorio2 5.623 reservatorio3 3.000 []s Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Abril 20, 2015 Ainda não ficou claro o que quer encontrar, qual seria a lógica. O nome "reservatorio1" aparece duas vezes nesta tabela, bem como "reservatorio3". Seria uma soma dos valores por nome, ou a última data? É preciso formular o problema, para entende-lo e encontrar a solução. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 20, 2015 na tabela tenho o seguinte: cod_acomp_reserv | nome_acomp_reserv | vol_atual_acomp_reserv | data_acomp 1 reservatorio1 1.500 15/03/2015 2 reservatorio2 5.623 10/03/2015 3 reservatorio3 2.568 08/03/2015 4 reservatorio1 1.000 30/03/2015 5 reservatorio3 3.000 01/04/2015 tenho que exibir a última atualização. reservatorio1 1.000 reservatorio2 5.623 reservatorio3 3.000 []s Use um subselect com max select * FROM nome_acomp_reserv s1 where data_acomp = (select max(data_acomp) from semar_acomp_reser s2 where s2.nome_acomp_reserv = s1.nome_acomp_reserv) Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 20, 2015 Nada ainda, vou tentando por aqui... []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 20, 2015 O que deu errado ? Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 21, 2015 não me retornou nada nenhum resultado. []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 21, 2015 select * FROM semar_acomp_reserv s1 where data_acomp = (select max(data_acomp) from semar_acomp_reser s2 where s2.nome_acomp_reserv = s1.nome_acomp_reserv) Creio que o erro foi o nome da tabela. Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 21, 2015 tente Motta $sql_vol_atual = mysql_query("select * FROM semar_acomp_reserv s1 where dt_acomp_reserv = (select max(dt_acomp_reserv) from semar_acomp_reser s2 where s2.nome_acomp_reserv = s1.nome_acomp_reserv)"); por enquanto estou ultilizando assim me retornando apenas um resultado: $sql_vol_atual = mysql_query("SELECT nome_acomp_reserv,vol_atual_acomp_reser FROM semar_acomp_reser WHERE nome_acomp_reserv = '$pesq_nome_reserv' ORDER BY nome_acomp_reserv DESC LIMIT 1"); []s Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 21, 2015 tente Motta $sql_vol_atual = mysql_query("select * FROM semar_acomp_reserv s1 where dt_acomp_reserv = (select max(dt_acomp_reserv) from semar_acomp_reser s2 where s2.nome_acomp_reserv = s1.nome_acomp_reserv)"); por enquanto estou ultilizando assim me retornando apenas um resultado: $sql_vol_atual = mysql_query("SELECT nome_acomp_reserv,vol_atual_acomp_reser FROM semar_acomp_reser WHERE nome_acomp_reserv = '$pesq_nome_reserv' ORDER BY nome_acomp_reserv DESC LIMIT 1"); []s até agora sem nenhum resultado. []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 21, 2015 Executou a sql que eu fiz diretamente no banco ? Qual resultado ? Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 22, 2015 retornou o resultado esperado :closedeyes:. acho que é por conta do 1º select $sql = mysql_query("SELECT * FROM cad_reser_semarh INNER JOIN usuarios ON (cad_reser_semarh.usuarios_cod_usr=usuarios.cod_usr) INNER JOIN municipio_ibge ON (cad_reser_semarh.mun_cad_reser_semarh=municipio_ibge.cod_municipio) WHERE cod_cad_reser_semarh LIKE '$pesq_nome_reserv'"); tem como melhorar e colocar esse select? tentei usar UNION mais não consegui. SELECT * FROM semar_acomp_reser s1 WHERE dt_acomp_reserv = ( SELECT MAX( dt_acomp_reserv ) FROM semar_acomp_reser s2 WHERE s2.nome_acomp_reserv = s1.nome_acomp_reserv ) []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 22, 2015 Como a tabela semar_acomp_reser se relaciona com as tabelas da sua sql (cad_reser_semarh,usuarios e municipio_ibg) ? Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 22, 2015 a tabela semar_acomp_reser o campo nome_acomp_reserv(FK). a tabela cad_reser_semarh o campo cod_cad_reser_semarh(PK) logo se relaciona com nome_acomp_reserv da tabela semar_acomp_reser. a tabela usuarios o campo cod_usr(PK) se relaciona com todas as tabelas com campo usuarios_cod_usr(FK).não há relacionamento com a tabela municipio_ibge. []s Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 22, 2015 Basta vc adaptar a sua query a mais este relacionamento tratando a maior data como na minha sql. Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 22, 2015 blz, vou tentar aqui depois retorno. []s Compartilhar este post Link para o post Compartilhar em outros sites
santos_s 12 Denunciar post Postado Abril 23, 2015 @mota tentei assim: SELECT * FROM semar_acomp_reser s1, cad_reser_semarh INNER JOIN usuarios ON ( cad_reser_semarh.usuarios_cod_usr = usuarios.cod_usr ) INNER JOIN municipio_ibge ON ( cad_reser_semarh.mun_cad_reser_semarh = municipio_ibge.cod_municipio ) WHERE cod_cad_reser_semarh LIKE '$pesq_nome_reserv' AND dt_acomp_reserv = ( SELECT MAX( dt_acomp_reserv ) FROM semar_acomp_reser s2 WHERE s2.nome_acomp_reserv = s1.nome_acomp_reserv ) mais sempre me trás 3 resultados, independente da quantidade que tenha tenha no banco. vou tentando aqui... []s Compartilhar este post Link para o post Compartilhar em outros sites