2013-02-26 44 views
1

相反我有以下兩個表:A和B查詢的MYSQL

乙包含一個外鍵答:A_ID。

我有以下查詢:

選擇a * FROM a INNER JOIN b ON ba_id = aid WHERE b.stuff = 1 AND(QueryCheckingDateWithBFields)

我想要扭轉查詢,以便我這樣做:

選擇a * FROM a INNER JOIN b ON ba_id = aid WHERE b.stuff!= 1 OR(!QueryCheckingDateWithBFields)

它的工作原理除了一個問題很好。我希望我的第一個查詢+我的第二個查詢=全部表條目。但是,如果沒有A與A的a_ID B,則不會選擇該A。我怎麼說「我也想要沒有加入的A?」

+0

如果你想在'所有元素了';爲什麼不去除'INNER JOIN'? – hjpotter92 2013-02-26 10:48:44

回答

4

使用left outer join代替inner join和調整where子句來支持的情況時,有沒有B

SELECT a.* FROM a LEFT OUTER JOIN b ON b.a_id = a.id 
WHERE b.id == null OR (b.stuff = 1 AND (QueryCheckingDateWithBFields)) 

SELECT a.* FROM a LEFT OUTER JOIN b ON b.a_id = a.id 
WHERE b.id == null OR b.stuff != 1 OR (!QueryCheckingDateWithBFields) 
+0

太棒了!我只需要它的第二個查詢。從邏輯的角度來看,這意味着當我想要補充一個請求時,我也需要考慮這個連接。 – Syl 2013-02-26 13:04:35

2

使用LEFT JOIN而不是INNER JOIN