2011-11-11 5 views
8

J'ai une configuration de table dans ma base de données avec cette structure (http://cl.ly/3D1D3m1O0v3d0x2j0Z0E)MySQL ORDER BY COUNT()?

J'exécution d'une requête dans une boucle while et je veux commander par le comte de la colonne de prof.

Voici à quoi ressemble ma requête, même si je continue à recevoir des erreurs.

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

Ceci est l'avertissement que je reçois sans cesse.

Attention: mysql_fetch_assoc() attend le paramètre 1 pour être ressource, booléenne donnée dans

Répondre

12

Pour ce que ça vaut, toute utilisation d'une fonction d'agrégation dans la liste de sélection signifie que l'ensemble de résultats n'aura qu'une seule ligne. Cela n'a aucun sens de trier un ensemble de résultats avec une seule ligne.

Si vous vouliez obtenir un nombre d'évaluations par valeur distincte du prof, vous devez utiliser ceci:

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

qui sortie plusieurs lignes, une ligne par valeur prof, avec le nombre de lignes pour chaque valeur prof donnée.

+0

Merci pour la suggestion. Réalisé à la base ce que le problème était, j'ai eu un extra 'dans ma mysql_query et il provoquait le message d'avertissement. Je ne peux pas croire que je l'ai négligé au début. – Jako

6

Alias ​​le nom de colonne, puis le mettre dans votre commande par clause :)

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