[英]SQL how to query on self-join
一个sql问题让我很困惑,我有两个这样的表
create table faculty
(fac No
fac first name
fac last name
fac supervisor No)
另一个是
create table offering
(offer No
course No
offterm
offyear
offlocation
offime
facNo )
现在,我需要编写一个查询,其中列出了教职员工的姓名以及该教职员工在2010年与其主管一起教授同一门课程的课程编号。
我试着这样写一个查询
select fa.FacNo,fa.FacFirstName,fa.FacLastName
from faculty as fa,faculty as fs,Offering as o, Offering as os
where fa.FacSupervisor = fs.FacNo
and fa.FacNo = o.FacNo
and fa.FacSupervisor = os.FacNo
and o.OffYear = 2010
但我没有正确的答案,所以请给我一些提示
谢谢大家,我的工作如下
select f.FacFirstName,F.FacLastName,s.FacFirstName as SupFirstname,s.FacFirstName as SupLasName,o.CourseNo
from faculty as f, Faculty as s ,Offering as o, Offering as os
where f.FacSupervisor = os.FacNo
and f.FacNo = o.FacNo
and o.CourseNo = os.CourseNo
and f.FacSupervisor = s.FacNo
and o.OffYear =2010 and os.OffYear =2010
我希望这对于一些面对相同问题的新SQL学习者有所帮助。
“所以请给我一些提示”
既然是您的问题,我很乐意提供提示。
使您的联接明确-极大地提高了可读性。 例如:
FROM faculty as fa
INNER JOIN
faculty as fs ON fa.FacSupervisor = fs.FacNo
INNER JOIN
Offering as o ON fa.FacNo = o.FacNo
INNER JOIN
Offering as os ON fs.FacNo = os.FacNo
一旦这样做,我怀疑您遇到任何问题都会好运。 或至少可以为我们提供更多帮助。
然后,您需要过滤
WHERE o.[course No] = os.[Course No]
AND o.OffYear = 2010
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.