2011-11-11 17 views
8

Tengo una configuración de mesa en mi base de datos con esta estructura (http://cl.ly/3D1D3m1O0v3d0x2j0Z0E)MySQL ORDER BY COUNT()?

He ejecución de una consulta a través de un bucle while y quiero pedir a la cuenta de la columna de la prof.

Así es como se ve actualmente mi consulta, aunque sigo recibiendo errores.

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

Esta es la advertencia que sigo recibiendo.

Advertencia: mysql_fetch_assoc() espera parámetro de 1 a ser el recurso, boolean given en

Respuesta

12

Por lo que vale la pena, cualquier uso de una función de agregado en la lista de selección significa que el conjunto de resultados tendrá solo una fila. Tiene poco sentido ordenar un conjunto de resultados con una sola fila.

si nos referimos a obtener una cantidad de las notas por valor distinto del prof, se debe utilizar la siguiente:

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

que hará que salga varias filas, una fila por cada valor prof, con el recuento de filas para cada dado el valor del prof.

+0

Gracias por la sugerencia. Cuando me di cuenta de cuál era el problema, tuve un extra 'en mi mysql_query y estaba causando el mensaje de advertencia. No puedo creer que lo haya pasado por alto al principio. – Jako

6

Alias ​​el nombre de columna y luego poner esto en su orden por cláusula :)

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