餐桌指导:ID, name, dept_name, salary
学生:ID, name, dept_name, tot_cred
表顾问:s_ID, i_ID
包含两个表的学生id和讲师id。
我需要找到所有instructor
和student's
名称,其中department
的advisor
是CComp.Sci
我可以找到所有的教师和学生的身份证,因为老师是计算机科学的。只有学生的名字。
但不能同时找出两个名字。
我写的是:
SELECT student.name
FROM student
WHERE student.ID in (SELECT advisor.s_ID
FROM advisor
, instructor
WHERE advisor.i_ID = instructor.ID
and instructor.dept_name = 'Comp.Sci')
最佳答案
使用“where.”。。in(..)将给您带来糟糕的性能,同时它也不允许您从where子句中的表中获取数据。
这里有一个解决方案,如果你想得到结果的讲师姓名一边单独与学生姓名。
SELECT S.name AS Student,I.name AS Instructor
FROM Students AS S
JOIN Advisor AS A ON A.s_ID = S.Id
JOIN Instructor AS I ON I.Id = A.i_ID
WHERE I.dept_name = 'Comp.Sci'
*注意我用了别名
**例如,如果你想让所有的学生,甚至是那些没有老师的学生,使用左连接