我正在使用我没有创建的系统。该系统有3个主要表:
用户,课程和用户组。我正在使用一个名为coursehits的额外表。
这是一个MySQL DB,5.0。数据库中没有任何关系,因此只需在课程和用户表中向用户组(course_id和user_id)添加条目,即可将用户分配到课程。同样,如果他们开始课程,则可以参加课程。
我正在尝试计算用于报告数据的课程和用户组中的用户数量。到目前为止,我有以下在一个查询中没有正确计数,但这不正确,结果太高了:
SELECT DISTINCT
c.course_name,
COUNT(ug.user_id) AS "Enrolled",
COUNT(ch.user_id) as "Started"
FROM courses c, usergroups ug, coursehits ch, users u
WHERE ch.user_id = u.id
AND ug.user_id = u.id
AND ug.course_id = c.id
AND ch.page_id != 4
GROUP BY 1
在我单独做以下工作之前,确实有效:
SELECT DISTINCT c.course_name, COUNT(ug.user_id) AS "Enrolled"
FROM courses c, usergroups ug
WHERE ug.course_id = c.id
GROUP BY 1
现在我想在一个查询中报告每个课程的用户状态,我希望这有意义吗?!
答案 0 :(得分:1)
尝试:
SELECT c.course_name,
COUNT(DISTINCT ug.user_id) AS "Enrolled",
COUNT(DISTINCT ch.user_id) as "Started"
FROM courses c
left join usergroups ug on ug.course_id = c.id
left join coursehits ch on ch.course_id = c.id and ch.page_id != 4
GROUP BY c.course_name