2011-11-11 39 views
8

Tôi có thiết lập bảng trong cơ sở dữ liệu của mình với cấu trúc này (http://cl.ly/3D1D3m1O0v3d0x2j0Z0E)MySQL ORDER BY COUNT()?

Tôi đã chạy truy vấn thông qua một vòng lặp while và tôi muốn sắp xếp theo số cột prof.

Đây là giao diện truy vấn của tôi, mặc dù tôi vẫn gặp lỗi.

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

Đây là cảnh báo tôi tiếp tục nhận được.

Cảnh báo: mysql_fetch_assoc() dự kiến ​​tham số 1 là tài nguyên, boolean được đưa ra trong

Trả lời

12

Đối với những gì nó có giá trị, bất kỳ việc sử dụng hàm tổng hợp nào trong danh sách lựa chọn có nghĩa là tập kết quả sẽ chỉ có một hàng. Nó làm cho ít ý nghĩa để sắp xếp một tập hợp kết quả với một hàng duy nhất.

Nếu bạn có nghĩa là để có được một số xếp hạng cho mỗi giá trị riêng biệt của prof, bạn nên sử dụng này:

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

Đó sẽ ra nhiều hàng, một hàng cho mỗi giá trị prof, với số lượng hàng cho mỗi cho giá trị prof.

+0

Cảm ơn đề xuất. Thực hiện ở cốt lõi vấn đề là gì, tôi đã có thêm một 'trong mysql_query của tôi và nó đã gây ra thông điệp cảnh báo. Không thể tin rằng tôi đã bỏ qua nó lúc đầu. – Jako

6

Bí danh tên cột và sau đó đưa rằng trong hàng của bạn bằng khoản :)

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