【问题标题】:Two dissimilar table join with one master table两个不同的表连接到一个主表
【发布时间】:2014-11-02 16:44:50
【问题描述】:

我有三张桌子:

  1. 组(group_id、group_name)
  2. 课程(lesson_id、组、课程名称)
  3. 测试(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

【问题讨论】:

    标签: mysql join master


    【解决方案1】:

    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

    在 tests.group = groups.group_id 上左连接测试

    GROUP BY groups.group_id

    【讨论】:

    • Worked .... :-) 我会在接下来的几个小时内接受这个答案,因为 StackOverflow 不允许这么早接受一个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多