mysql如何连接2个子查询

问题描述 投票:0回答:1

我有这个mysql代码:

        select course_id, students
        from(
            select course_id,count(*) as students
            from taughtby
            where u_id in (select s_id from student where s_id = u_id)
        group by course_id) as B   
        ;
        select course_id, professors
        from(
            select course_id,u_id,count(*) as professors
            from taughtby
            where u_id in (select p_id from professor where p_id = u_id)
        group by course_id) as A

我的数据库是这样的:

course(course_id,courseLevel)

学生(s_id,inPhase,yearsinProgram)

教授(p_id,hasPosition)

教员(course_id,u_id)

advisedby(s_id,p_id)

u_id可以是p_id或s_id

我的代码在mysql工作台中给了我2个不同的结果网格。有什么办法可以连接这两个网格?

问题是:对于每个学科,教他们的老师和学生的数量。特别是结果应为(x,y,z)形式,其中x该课程的course_id,y为该课程的数量教师人数,z教授该课程的学生人数。

mysql sql
1个回答
0
投票

您可以在三个表之间使用双join子句:

 select course_id, count(distinct p_id) as professors, count(distinct s_id) as students
   from taughtby
   left join professor on p_id = u_id
   left join student on s_id = u_id
  group by course_id

包括distinct关键字。

© www.soinside.com 2019 - 2024. All rights reserved.