Boa tarde pessoal,
estou tomando uma surra do HQL.
Digo primeiramente que não é preguiça minha vir aqui perguntar, pois já tentei com max, com left join, com group by e não consegui fazer o que preciso…
Tenho a tabela Visitante e a tabela Visita.
O Visitante.vis_id pode existir ou não dados dele no Visita.
Preciso listar o nome de todos os Visitante, correto:
Até aí sem problema nenhum, o que eu preciso agora é buscar na tabela Visita o maior Visita.visi_entrada cujo Visitante.vis_id=Visita.vis_id, e que também pode ser que não exista nenhum dado do Visitante.vis_id na tabela Visita, mas esse também tem que ser mostrado…
[quote=Xmio]Ta um pouco confuso o que você esta pretendendo fazer… Mas seguindo o assunto do tópico acredito que seja isso…
Então cara, você entendeu certinho o que eu preciso, e o que eu tinha tentado com max é exatamente isso que você fez… Só que eu estava executando a HQL pelo iReport, e na hora de exibir os dados, ele dava erro desse max no Select pois dizia que era um timestamp e não podia ser mostrado…
Usei max de outra forma, e acabei conseguindo o que eu queria, ficou assim:
SELECT vis.vis_nome AS vis_nome, visi.visi_entrada AS visi_entrada FROM Visitante AS vis, Visita AS visi
WHERE visi.visi_entrada is null OR visi.visi_entrada = (select max(visii.visi_entrada) from Visita visii where visii.vis_id = vis.vis_id)
Pelos testar que realizei até agora não terei problema assim, e acredito que a performance é pior que a que você postou, mas eu estava tendo o problema que citei…