您的查询有几个问题,导致它无法返回您想要的所有结果。首先,你使用的是
JOIN
而且只有一个匹配的行
admin_course_groups
LEFT JOIN
相反。第二,你是按
a_id
你应该什么时候分组
c_id
左连接
您需要修改
WHERE
允许的条款
fk_g_id
成为
NULL
SELECT `c_id`, `c_name`, COUNT(`a_id`) AS nam, MIN(start_date), MIN(end_date)
FROM admin_courses c
LEFT JOIN admin_course_groups g
ON g.fk_c_id = c.`c_id`
WHERE fk_g_id = 2 OR fk_g_id IS NULL
GROUP BY `c_id`
输出:
c_id c_name nam start_date end_date
1 Java - Basic Operators 1 2018-01-01 2018-09-25
2 JAVA Questions and Answers 0 (null) (null)
3 Java - Collections Framework 0 (null) (null)
SQLFiddle Demo