簡體   English   中英

在父表和子表之間加入

[英]Join between Parent and Child table

我有2個表: ParentChild有以下數據

在此輸入圖像描述

在此輸入圖像描述

現在,當我執行以下查詢時:

delete from Parent where Id in(2,3,4)
delete from Child

唯一的記錄是Parent

現在當我執行以下查詢時,我沒有得到任何記錄

select p.Id AS [ParentId],p.Name AS [ParentName], c.Id, c.Name from Parent p
Left join Child c on p.Id = c.ParentId 
where p.IsActive = 1 and c.IsActive = 1

當我從上面的查詢中刪除and c.IsActive = 1時,我得到了Package表中的記錄,但我想同時應用兩個活動檢查。 怎么做到這一點?

您的where子句將left join轉換為inner join 采用

select p.Id AS [ParentId],p.Name AS [ParentName], c.Id, c.Name 
from Parent p
Left join Child c on p.Id = c.ParentId 
                 and c.IsActive = 1
where p.IsActive = 1 

左連接表的所有過濾器都需要在on子句中。

另一個解決方案是在where子句條件中處理這兩種情況(當c.IsActive為null時 - 在子表中缺少行 - 或者為1)

where p.IsActive = 1 and COALESCE(c.IsActive, 1) = 1

暫無
暫無

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

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