-
[SQL]Group BY
Mi stò incasinando l'esistenza con questa query, pensavo fosse semplice ma c'è un problema che non riesco a risolvere...
Diciamo che ho una tabella che contiene 3 colonne per semplificare:
(casa, nome ,età)
In ogni casa ci possono essere più persone con età diversa, quindi visivamente la tabella sarebbe qualcosa del genere
----
1,marco ,60
1,sara ,57
1,elisa ,20
2,maria ,23
2,roberto ,22
Voglio sapere chi è l'abitante più grande di ogni casa e la sua età..
Io pensavo bastasse un
SELECT casa,nome,max(età), FROM tabella GROUP BY casa
La query funziona, mi ridà la massima età di ogni casa, ma il nome della persona è sbagliato!
Ho provato anche con HAVING età=max(età), ma non funziona perchè il maxetà si deve basare sul gruppo!
Suggerimenti?
-
Prova facendo:
SELECT casa,nome,max(età) AS m_eta FROM tabella GROUP BY casa ORDER BY m_eta DESC
così forse ti dovrebbe mettere nei primi posti le persone con età maggiori, se funge puoi mettere un limit per prendere solo quelli che ti interessano (quindi se le case sono 5 sarà LIMIT 5)
Prova è la prima cosa che mi è venuta in mente senza provare.
Ciaooooooo!!!!!!
-
No, in questo modo mi metterebbe in ordine il risultato e non la "struttura interna" della group by.
-
Scusa ma a me funziona!
La query esatta è:
SELECT casa, nome, max(eta) FROM tabella GROUP BY casa
Forse sbagliavi mettendo la virgola dopo l'ultimo argomento del SELECT
Prova con questa. (io nel db ho messo "eta" e non "età")
Ciaooooooo!!!!!!!!!!!
-
Bo, a me il nome risulta essere quello del più giovane e non del più vecchio...
HAAAAAAAAA stò impazzendo!
-
Hai copiato e incollato la query che ti ho postato?
Io l'ho copiata direttamente dal phpmyadmin, appena fatta la prova dove il risultato era quello da te richiesto...
Ciaooooooo!!!!!!!!