2014-01-26 147 views
-1

我想弄清楚如何只在需要時才返回列。有條件的左連接

數據將只存在於1_finance_add_details和地址e表時t.trans_type=2

SELECT t.*, 
a.company, 
a.house_number, 
a.flat_number, 
a.house_name, 
a.address1, 
a.address2, 
a.address3, 
a.town, 
a.county, 
a.post_code, 
a.country, 
f.*, 
e.company, 
e.house_number, 
e.flat_number, 
e.house_name, 
e.address1, 
e.address2, 
e.address3, 
e.town, 
e.county, 
e.post_code, 
e.country 
FROM 1_transactions t 
LEFT JOIN addresses a ON a.id=t.fk_addresses_id 
LEFT JOIN 1_finance_add_details f ON t.id=f.fk_transactions_id 
LEFT JOIN addresses e ON e.id=f.employ_fk_addresses_id 
WHERE trans_location=1 AND t.id=19; 

回答

3

不知道這是否是你想要的結果,但你可以添加另一個條件在你的左邊加入這樣的:

FROM 1_transactions t 
LEFT JOIN addresses a ON a.id=t.fk_addresses_id 
LEFT JOIN 1_finance_add_details f ON t.id=f.fk_transactions_id 
LEFT JOIN addresses e ON e.id=f.employ_fk_addresses_id AND t.trans_type=2 
WHERE trans_location=1 AND t.id=19; 

!注意:這會使地址E無效的領域與類型每隔t = 2

+0

不完全是,我是試圖只用所需的列來取回數據,而沒有其他的東西。 –

+0

我不太清楚你的意思,如果你提供一個你期望從查詢中得到的模擬輸出,它可能會更好地闡明你的問題。 – har2vey