MySQL查询从表中获取信息,并获取相关表的计数。不包括所有记录
问题描述:
我想运行一个查询,抓取所有课程。每行(课程)还应该有一个user_count。MySQL查询从表中获取信息,并获取相关表的计数。不包括所有记录
让我真正快速地展示我的表结构。我有两个相关的表格。这不显示这些表的所有字段,只是相关的信息。
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表中的记录那只能说明课程。指针?
答
要点:
-
count(*)
应COUNT(user_course.user_id)
为您计算号每个课程的用户数 - ON条件必须用圆括号包装
- 使用组
course.id
,因为您正在按课程分组结果b ASIS。
查看下面的查询。
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`
答
尝试左外连接。 而不是'连接',写'左外连接'。
而且包裹计数ISNULL(COUNT(*),0)来捕获任何记录为0值
shiplu,这是正确的,除了我必须做“左外连接”而不是“连接“。 谢谢! – Roeland 2012-02-28 23:41:55