我有这个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教授该课程的学生人数。
您可以在三个表之间使用双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
关键字。