2011-09-16 4 views
1

첫 번째 값의 값에 따라 두 번째 테이블에서 열을 선택해야하는 테이블이 두 개 있습니다.조건부 SQL 쿼리

예 그래서, (펜촉 들면 N 혁명 R)이 같은 형태에 따라 데이터 1의 값을 얻고 싶은

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

표 2

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 Yep, misse 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 = ?