Contare numero record uguali

  • Creatore Discussione Creatore Discussione colomber
  • Data di inizio Data di inizio

colomber

Utente Attivo
4 Dic 2012
232
1
18
Devo contare il numero di messaggio di ogni autore, alla mia query ho aggiunto le righe in neretto ma non funziona sapete perché?


"SELECT id_messaggio, testo, data_creazione, autore, count(autore) as totale FROM messaggi WHERE id_categoria = '".$_GET["id_categoria"]."' GROUP BY autore ORDER BY data_creazione ASC";
 
PHP:
"SELECT autore, count(autore) as totale
FROM messaggi
WHERE id_categoria = '".$_GET["id_categoria"]."'
GROUP BY autore
ORDER BY totale DESC, autore";

se inserisci altre colonne nella "select", devono essere riprese anche nel "group by"
quindi il conteggio non sarà più per autore ma per l' "elenco" delle colonne
 
vedendo anche la discussione su HTML.it, devo dire che nessuno ti aiuta perché sono tutti concentrati sul "ragionamento" dettagli e totali che non possono essere ottenuti insieme,
ebbene proviamo con questa query
PHP:
SELECT
   id_discussione
   ,titolo_discussione
   ,datacreazione_discussione
   ,autore_discussione
   ,( SELECT count(*) FROM discussione d2 WHERE d2.autore_discussione = d1.autore_discussione ) totale
FROM discussione d1
WHERE id_categoria = 'categoria'
ORDER BY totale DESC, autore_discussione
con relativo risultato
upload_2017-8-10_7-34-40.png

query che se ti va bene, aggiusti tu per la tua necessità, come vedi ho usato un tuo esempio precedente per la prova

ps, se il totale è per categoria, puoi inserire la clausola where anche nella select del totale stesso con una "AND"
oppure puoi inserire una seconda select per ottenere il totale delle discussioni ed il totale per la categoria
 
Ultima modifica:
funziona perfettamente ti ringrazio ho imparato qualcosa di nuovo.

ho modificato dalla query solo:

ORDER BY totale DESC, autore_discussione

in

ORDER BY autore_discussione ASC


l'ho tolto perché mi ordinava i messaggi in maniera errata.
 
Ultima modifica:

Discussioni simili