我有三张桌子:
因此,在一个小组中,可能会有许多课程和测试。现在我想在SINGLE QUERY中获得每组课程和测试次数。
以下是我的工作方式:
SELECT group_id,group_name,COUNT(lessons.lesson_id),COUNT(tests.test_id) 来自群组
LEFT JOIN课程on lessons.group = groups.group_id
LEFT JOIN测试on tests.group = groups.group_id
GROUP BY groups.group_id
但它会为两个COUNT返回错误的值。如果我仅针对课程或测试运行相同的查询,则返回正确但不能同时使用单个查询。
更新
Rishabh回答了这个问题,而且效果很好。如果我在单个查询中获取所有课程和测试时不必使用聚合函数i-e,该怎么办?
SELECT group_id,group_name,lessons.lesson_name,tests.test_name 来自群组
LEFT JOIN课程on lessons.group = groups.group_id
LEFT JOIN测试on tests.group = groups.group_id
这会导致结果中出现重复记录。有什么建议吗?
GROUP BY groups.group_id
答案 0 :(得分:0)
SELECT group_id,group_name,COUNT(DISTINCT lessons.lesson_id),COUNT(DISTINCT tests.test_id)FROM groups
LEFT JOIN课程on lessons.group = groups.group_id
LEFT JOIN测试on tests.group = groups.group_id
GROUP BY groups.group_id