problemi con conteggio
sto scrivendo una query che dovrebbe tirarmi fuori i 10 utenti che hanno scritto più messaggi, ordinati in decrescente (quindi il primo è quello che ne ha scritti di più) ma non riesco ad applicare la condizione!!
La tabella è di questo tipo:
| id_messaggio | messaggio | id_utente | data_ins |
... e questa è la mia query ma mi da errore sul WHERE
SELECT id_messaggio, id_utente, COUNT(*) AS n
FROM messaggi
WHERE n > 10
GROUP BY id_utente
ORDER BY n DESC
- Forum:


having
La query non può funzionare perchè il WHERE viene applicato prima del conteggio di conseguenza
mysql non può riconoscere il campo "n" in quanto ancora non esiste.
Per applicare una condizione su un raggruppamento (GROUP BY) devi utilizzare HAVING in questo modo:
SELECT `id_messaggio`, `id_utente`, COUNT(*) AS `n`FROM `messaggi`
GROUP BY `id_utente`
HAVING `n` > 10
ORDER BY `n` DESC
LIMIT 10;
Ho aggiunto la LIMIT visto che ti servono solo gli i 10 utenti che hanno scritto + messaggi
ok
FUNZIONA!! non conoscevo l'HAVING..
Sei un drago, grazie!