Първо, липсва ви GROUP BY
клауза в долната част на вашата заявка за групиране по 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
След това, ако искате просто да не показвате редове, където total_student =0, тогава можете да използвате клаузата MySQL HAVING:
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
Или можете да промените LEFT JOIN
към INNER JOIN
за да постигнем същото в този случай.
И накрая, ако вместо това искате да замените 0 с null, но все още имате редове, можете да актуализирате оператора select, получавайки общите суми до:
SELECT IF(COUNT(student_name) = 0, NULL, COUNT(student_name)) AS total_student, school_name