2011-11-11 3 views
8

Ho una configurazione tabella nel mio database con questa struttura (http://cl.ly/3D1D3m1O0v3d0x2j0Z0E)MySQL ORDER BY COUNT()?

ho esecuzione di una query attraverso un ciclo while e voglio ordinare dal conte della colonna prof.

Ecco come appare attualmente la mia query, anche se continuo a ricevere errori.

$order_list = mysql_query(" 
    SELECT COUNT(prof), 
    FROM prof_rating 
    ORDER BY COUNT(prof) ASC"); 

Questo è l'avviso che continuo a ricevere.

Attenzione: mysql_fetch_assoc() si aspetta parametro 1 per essere risorsa, boolean given in

risposta

12

Per quello che vale, qualsiasi utilizzo di una funzione di aggregazione nell'elenco di selezione significa che il set di risultati avrà solo una riga. Non ha molto senso ordinare un set di risultati con una singola riga.

Se si intende ottenere un conteggio di valutazioni per il valore distinto di prof, si dovrebbe usare questo:

$order_list = mysql_query(" 
    SELECT prof, COUNT(*) AS PROFCOUNT, 
    FROM prof_rating 
    GROUP BY prof 
    ORDER BY PROFCOUNT ASC'"); 

che sarà in uscita più righe, una riga per il valore prof, con il conteggio di righe per ogni dato valore prof.

+0

Grazie per il suggerimento. Realizzato al centro quale fosse il problema, ho avuto un extra nella mia mysql_query e stava causando il messaggio di avviso. Non posso credere di averlo trascurato all'inizio. – Jako

6

Alias ​​il nome di colonna e poi mettere che nel vostro ordine dalla clausola :)

$order_list = mysql_query(" 
SELECT COUNT(prof) AS PROFCOUNT, 
FROM prof_rating 
ORDER BY PROFCOUNT ASC'");