在我的sqllite練習中,我發現了以下問題。 我基本上有三個不同的表:
主題
| PRIMARY KEY(ID)/th> | 主旨 |
|---|---|
| 1 |
參賽者
| PRIMARY KEY(ID)/th> | 姓名 | 學期。
|---|---|
| 1 | Meyer |
它們在表格參與者串列中被參考
現在我被要求創建一個包含以下內容的視圖。Participants.ID, Participants.Name和Subjects.Subject,這樣我就有了一個顯示參與者的ID、名稱和訪問物件的表。
到目前為止,我是這樣做的:
CREATE VIEW[OverVIEW]AS
SELECT Participants.ID,
參與者.姓名。
課題組.課題
from Participants
LEFT JOIN Subjects on Participants.ID = Subjects.ID。
結果我得到這樣的結果:
這是有道理的,因為只有三個主題,我在只有三個主題的基礎上左鍵連接了6個參與者.ID
。我怎樣才能填滿空白的主題?這樣,4-6的主題也會被顯示出來? 我希望你能理解我的問題,我宣布它足夠好。
uj5u.com熱心網友回復:
你不能將Participants加入到Subjects中,因為它們沒有直接關系,所以這個ON子句:
on Participants.ID = Subjects.ID
這沒有意義,因為參與者的IDs與受試者的IDs沒有關系。
你有一個表ParticipantsList,它可以作為其他兩個表之間的一個中間環節:
SELECT p.ID, p.Name, s.Subject
FROM參與者 p
LEFT JOIN ParticipantsList pl ON pl.Participant_ID = p.ID
LEFT JOIN Subjects s ON s.ID = pl.Subject_ID。
這將回傳所有參與者,即使他們沒有鏈接到任何主題。
如果你只想要在表ParticipantsList中至少有1個主題的參與者,那么你可以使用INNER連接。
對于您在問題中提供的樣本資料,在這兩種情況下,結果都是一樣的。
請看demo.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/309799.html
標籤:
上一篇:從資料庫中合并的組合框:tkinter.TclError:索引0超出范圍和其他錯誤
下一篇:實體化[org.springframework.orm.hibernate5.LocalSessionFactoryBean]失敗。工廠方法'sessionFactory'發生了例
