我正在使用我没有创建的系统。该系统有3个主表:多个字段报告,在MySql中使用自定义计数
用户,课程和用户组。我正在使用一个名为coursehits的额外表格。
这是一个MySQL数据库,5.0。数据库中没有任何关系,因此只需向课程和用户表中的用户组(course_id和user_id)添加条目即可将用户分配到课程中。同样,如果他们开始课程,则会进入课程。
我正在计数报告数据的用户在coursehits和usergroups中的数量。到目前为止,我有这不一个查询正确计算如下但这并不正确计算,结果是太高:
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
现在,我试图在一个查询中报告每个课程的用户状态,我希望这是有意义的。
有为什么它必须是一个查询任何特定的目的是什么?在SQL中,最好让两个查询分开执行,而不是尝试以某种奇怪的方式进行组合。 – leafnode 2010-10-06 12:24:13
为开发者做这件事,我分别做了两个查询,他们工作得很好,现在做了三分之一。只是方便我想,以及推动我的SQL界限。 – Mathnode 2010-10-06 12:34:49