2010-07-15 81 views
1

請考慮以下示例。 alt text http://i26.tinypic.com/1zo7mub.jpg使用SQL查詢幫助

我不得不選擇從表1存在於表2不table1中存在,但在表2的存在以及有IsActive = 1和狀態不爲空的所有記錄也+的表2中的所有記錄。

我最初嘗試與連接,但如何做後面的部分,我必須選擇表1中不存在的記錄?我必須在一個單獨的查詢中使用SQL視圖來完成它。

編輯 傢伙,我需要的結果結合起來像2代表的聯合,使櫃面行不存在於表1,但目前在表2中,屬於表1的列是空白。

回答

2

下面是一個例子查詢:

select * 
from Table2 t2 
left join 
     Table1 t1 
on  t1.id = t2.id 
where t1.id is not null 
     or (isActive = 1 and status is not null) 

的第一行where子句需要照顧「的所有記錄,從存在於表2表1」。第二行是「不存在於table1中,但存在於table2中,且IsActive = 1且狀態不爲空」。

+0

謝謝Andomar,你能看看我的查詢嗎?雖然我嘗試了類似的方式,但它不工作。此外,你爲什麼使用OR而不是AND? table1也通過table2連接起來。任何原因 ? – 2010-07-15 09:52:56

+0

@Popo:你必須澄清「不工作」。 OR將顯示滿足至少一個條件的行;與和,他們必須符合所有條件。我從Table2開始,因爲即使Table1中沒有匹配的行,您也想顯示Table2中的行。 – Andomar 2010-07-15 10:19:49

+0

嗨,與我以前的查詢我從表2中只有1個表和空列的列。我也無法讓您的查詢工作 – 2010-07-15 10:36:09

0

是這個嗎?不知道我是否正確地做了你想做的事情。

SELECT 
    * 
FROM 
    Table1 t1 
     JOIN 
    Table2 t2 ON (t1.ID = t2.ID OR (t1.ID IS NULL AND t2.isActive = 1 AND t2.Status IS NOT NULL))