2012-07-25 128 views
0

我有以下子表中的父/子關係:SQL選擇具有多個連接條件


CHILD_ID PARENT_ID CHILD_VALUE 
------------------------------ 
1   1   x 
2   1   y 
3   2   y 

現在我想選擇所有的現有唯一的父母在CHILD_VALUE是:

  • 的小孩值= X(將只有1或無)
  • 如果具有值x不存在子 - NULL

換句話說,如果沒有孩子「匹配」該值存在,則顯示具有「匹配」子元素的所有父母或NULL。

這樣的結果應該是這樣的:


PARENT_ID CHILD_ID CHILD_VALUE 
------------------------------ 
1   1   x 
2   NULL  NULL 

的問題是我怎麼能縮小在這種情況下加入。

+0

你能解釋一下你用什麼邏輯爲「如果沒有值的孩子存在」的情況下,結果CHILD_ID是「3」而不是「2」或「NULL」? – beny23 2012-07-25 09:38:51

+0

我在結果表中犯了一個錯誤,當然,父2的CHILD_ID必須爲NULL。 – Spooky 2012-07-25 09:42:38

回答

2

該做的伎倆:

select distinct a.parent_id, b.child_id, b.child_value 
    from test1 a 
    left outer join test1 b 
       on a.parent_id = b.parent_id 
       and b.child_value = 'x' 

另見本SQL fiddle

+0

謝謝,AND在聯接中做到了。正在嘗試將其放入WHERE部分。 – Spooky 2012-07-25 10:04:40