【发布时间】:2014-11-02 16:44:50
【问题描述】:
我有三张桌子:
- 组(group_id、group_name)
- 课程(lesson_id、组、课程名称)
- 测试(test_id、组、test_name)
因此,在一个小组中,可能会有很多课程和测试。现在我想在 SINGLE QUERY 中获取每组的课程数量和测试数量。
这是我的做法:
SELECT group_id, group_name, COUNT(lessons.lesson_id), COUNT(tests.test_id) 来自群组
LEFT JOIN 课程 ON Lessons.group = groups.group_id
在 tests.group = groups.group_id 上左连接测试
GROUP BY groups.group_id
但它为两个 COUNT 返回错误的值。如果我只对课程或测试运行相同的查询,它会返回正确的但不是同时使用单个查询。
更新
Rishabh 回答了这个问题,效果很好。如果我不必使用聚合函数,即在一个查询中获取所有课程和测试时怎么办?
选择组 ID、组名称、课程名称、测试名称 来自群组
LEFT JOIN 课程 ON Lessons.group = groups.group_id
在 tests.group = groups.group_id 上左连接测试
这会导致结果中出现重复记录。有什么建议吗?
GROUP BY groups.group_id
【问题讨论】: