我想运行一个抓取所有课程的查询。每行(课程)也应该有 user_count 。
让我快速展示我的桌面结构。我有两张相关的表格。这不会显示这些表的所有字段,只显示相关信息。
COURSE
id
title
desc
USER_COURSE
id
user_id (fk)
course_id (fk)
我对此的第一个尝试是创建以下查询:
SELECT course.title, course.desc, COUNT(*) as `user_count`
FROM (`course`)
JOIN `user_course` ON `user_course`.`course_id` = `course`.`id`
GROUP BY `user_course`.`user_id`
此查询的问题是它只显示在user_course表中有记录的课程。指针?
答案 0 :(得分:2)
关键点:
count(*)
应为COUNT(user_course.user_id)
,因为您在计算每门课程的用户数course.id
使用分组,因为您要按结果对结果进行分组。请参阅下面的查询。
SELECT course.title,
course.desc,
COUNT(`user_course`.`user_id`) AS `user_count`
FROM `course`
JOIN `user_course`
ON ( `user_course`.`course_id` = `course`.`id` )
GROUP BY `course`.`id`
答案 1 :(得分:0)
尝试左外连接。 而不是'join',写'left outer join'。
还将计数包装在isnull(count(*),0)中以不将记录捕获为0值