[英]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.