簡體   English   中英

SQL 如何 select 表中的所有行加入其他表,即使沒有關聯的行

[英]SQL how to select all rows from table joining other table even if there are no rows associated

我有 3 張桌子

Projects   Persons      PeopleInProjects
 - Id      - Id         - Id
 - Name    - Name       - PersonId
           - Role       - ProjectId

我將如何 select 所有項目名稱和與該項目相關的人員角色為“管理員”?

PeopleInProjects 只是一個多對多關系表,其中包含與項目相關的所有人的 ID。 項目可以有許多或沒有與之關聯的人員。

我只需要 select 所有項目一次,我需要 select 項目,即使他們沒有與角色“管理員”相關聯的人。

Select pr.Name, p.Name 
from Projects as pr 
join PeopleInProjects as pp on pr.Id = pp.ProjectId
join Persons as p on pp.PersonId = p.Id
Where p.Role = 'admin'

僅選擇與管理員關聯的項目,而不是所有項目

如果您想要所有項目,然后是任何可能碰巧分配的管理員,請使用left join

Select pr.Name, p.Name 
from Projects pr left join
     (PeopleInProjects pp join
      Persons p
      on pp.PersonId = p.Id and p.Role = 'admin' 
     )
     on pr.Id = pp.ProjectId ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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