2015-09-15 65 views
2

我正在處理一個棘手的查詢,只是不明白如何處理它,因爲這兩個JOIN都沒有給出我想要的結果。MYSQL SELECT條件加入

我有兩個表:

Table1: 
id 
value 

Tabel2: 
id 
table1_id 
parameter (1,0) 
value 

,我需要選擇一切從TABLE_1,但如果在表2一排table1_id = table1.id和參數= 1,我想包括table2.value在結果。請注意,Table2中可以有多行table1_id = table1.id,但只有一行的參數= 1。

那麼,我希望得到的結果

table1.id | table1.value | table2.parameter |table2.value 
    1  |  v1  |     |  
    2  |  v1  |   1  |  v2 
    3  |  v1  |     |  
    4  |  v1  |   1  |  v2 

有人可以幫我查詢。感謝您的時間。

回答

2
SELECT * 
FROM 
    Table1 LEFT JOIN Table2 
    ON (Table1.id = Table2.table1_id AND Table2.parameter = 1) 
; 
+0

哇,它的工作! –

+0

@JohnW:upvote並將其標記爲已解決:這是遊戲規則:) –

1

您可以使用left joincase when用於顯示table2 value

select 
t1.id, 
t1.value, 
t2.parameter, 
case when t2.table_id is not null and t2.parameter = 1 then t2.value else null end as table2_value 
from table1 t1 
left join table2 t2 on t2.table1_id = t1.id