2011-09-16 23 views
1

私は2つのテーブルを持っています。最初のテーブルの値に応じて、2番目のテーブルのカラムを選択する必要があります。条件付きSQLクエリ

例だから、私は(ニブため、N革命のためのR)は、このように種類に応じて、DATA1の値を取得したい

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 

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うん、誤解d結合条件:) – xdazz

3

これまでの標準的なアプローチはCASEを使用することですの問い合わせ:あなたの最初の答えが間違っていた

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 = ?