2011-09-16 117 views
1

我有2個表,其中取決於第一個值,我不得不選擇第二個列。條件SQL查詢

table1的

data1|data2|type 
P3 | C | R 
P1 | D | N 
P2 | C | R 
P1 | C | N 
P2 | D | R 
P3 | D | N 

table2中

name|revolution|nibs 
C |repeat |may 
D |genocide |fill 

所以,我要根據類型,因爲這(R革命,N爲碎粒),以獲得值DATA1

查詢P3:

name|value 
C |repeat 
D |fill 

查詢P1

name|value 
C |may 
D |fill 

感謝

回答

2
SELECT t2.name, IF(t1.type='R',t2.revolution,t2.nibs) as value 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.data2 = t2.name 
WHERE t1.data1 = ? 
+0

你的第一個答案是錯的(以前的編輯),但我設法得到它,我們已經達到了相同的結果,所以謝謝:D –

+0

@Diego Yep,misse d連接條件:) – xdazz

3

這個標準的方法是使用一個案例:

select 
    t1.data2, 
    case t1.type 
     when 'R' then t2.revolution 
     when 'N' then t2.nibs 
    end 
from table1 t1 
join table2 t2 on t1.data2 = t2.name 
where data1 = ?