2013-07-03 117 views
1

我試圖做一個LEFT JOIN只有在我加入表中的一列= 1的MySQL LEFT JOIN只有

這是我到目前爲止所。

SELECT * FROM size, oil LEFT JOIN purchase ON oil. oilId = purchase. purOilId 
WHERE sizId = oilSizeId AND oilUnused ='' ORDER BY oilOurName 

我需要添加的內容如下。

LEFT JOIN purhcase (only if purMark = 1) 

這是我不知道該怎麼做的。

因爲油表需要定義結果中有多少行,所以它不會起作用。

感謝

回答

0

添加和條件的JOIN像下面

SELECT * FROM size, oil LEFT JOIN purchase ON oil.oilId = purchase.purOilId AND purchase.purMark = 1 
WHERE sizId = oilSizeId AND oilUnused ='' ORDER BY oilOurName 
+0

謝謝!完美工作 – Josiah

1

在MySQL我認爲你可以做到這一點的唯一方法是通過在具有子查詢您的加入與此類似:

SELECT * FROM size, oil 
LEFT JOIN (
    SELECT * 
    FROM purchase 
    WHERE purMark = 1 
) purchase ON purchase.purOilId = oil.oilId /* or whatever your joining criteria is */ 
WHERE sizId = oilSizeId AND oilUnused ='' 
ORDER BY oilOurName 

希望這會有所幫助。

0

如下嘗試:

SELECT * FROM size, oil 
LEFT JOIN purchase ON oil. oilId = purchase. purOilId 
WHERE purMark = 1 
sizId = oilSizeId AND oilUnused ='' 
UNION 
SELECT * FROM size, oil 
WHERE purMark != 1 
sizId = oilSizeId AND oilUnused ='' 

或者

SELECT * FROM size, oil 
LEFT JOIN purchase ON oil. oilId = purchase. purOilId AND purMark = 1 
WHERE sizId = oilSizeId AND oilUnused =''