簡體   English   中英

SQL如何在自聯接上查詢

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM