Đầu tiên, bạn đang thiếu GROUP BY
mệnh đề ở cuối truy vấn của bạn để nhóm theo school_name
:
SELECT count(student_name) AS total_student, school_name
FROM student
LEFT JOIN school_info ON school_info.school_id = student.school_id
WHERE student.status = '0'
GROUP BY school_name
Sau đó, nếu bạn chỉ muốn không hiển thị các hàng có total_student =0 thì bạn có thể sử dụng mệnh đề HAVING của MySQL:
SELECT count(student_name) AS total_student, school_name
FROM student
LEFT JOIN school_info ON school_info.school_id = student.school_id
WHERE student.status = '0'
GROUP BY school_name
HAVING count(student_name) > 0
Hoặc, bạn có thể thay đổi LEFT JOIN
tới INNER JOIN
để hoàn thành điều tương tự trong trường hợp này.
Cuối cùng, nếu thay vào đó, bạn muốn thay thế 0 bằng null nhưng vẫn có hàng, bạn có thể cập nhật câu lệnh select nhận tổng thành:
SELECT IF(COUNT(student_name) = 0, NULL, COUNT(student_name)) AS total_student, school_name