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