up
provo a spiegarmi meglio con un esempio:
utente:
|id|nome|cognome|num|
|1|pippo|rossi|2|
|2|pluto|bianchi|3|
3|paperino|verdi|1|
hobby:
|id|idUtente|nomeHobby|tipo|
|1|1|calcio|a|
|2|1|francobolli|b|
|3|2|palestra|a|
|4|2|basket|a|
|5|2|calcio|a|
allora, se tutti gli utenti hanno lo stesso numero di hobby, dovrei stamparli ordinandoli per 'num', cioè:
3|paperino|verdi|1|
|1|pippo|rossi|2|
|2|pluto|bianchi|3|
..e fin qui nessun problema.
il problema è che, invece, il numero di hobby (cioè di righe nella tabella hobby associate ad ogni utente) ha la priorità sul campo 'num', quindi, visto che 'pluto' ha 3 hobby (palestra, basket, calcio) dovrà essere stampato per primo, pippo per secondo (ha 2 hobby), e
paperino per ultimo (non ha neanche un hobby).
e dovrei anche eseguire una clausola WHERE sugli hobby..
così a naso, dovrebbe essere una cosa del tipo:
Codice PHP:
SELECT utente.id, utente.nome, COUNT(hobby.idUtente) AS numHobby FROM utente LEFT JOIN hobby ON (utente.id = hobby.idUtente) WHERE hobby.tipo != '$x' GROUP BY utente.id ORDER BY numHobby DESC, utente.num DESC