2013-09-08 2 views
0

두 세트의 ID (dec_id 및 rec_id)가있는 테이블이 있습니다. table1에 dec_id가 있으면 왼쪽 테이블에 조인해야합니다. 그렇지 않은 경우 table2를 조인합니다. 두 번째 열에 대해서도 마찬가지입니다. 나는 또한 어떤 ID가 어떤 테이블에 있는지 알 필요가있다. 모든 의도와 목적 (떨어져 실제 데이터에서) 동일한 위해MySQL : if/case 문을 기반으로 다른 테이블 조인

 
dec_id  rec_id  
----------------- 
11   16 
23   24 
15   31 

표 2 및 3은 :

 
id  name   data1   data2 
------------------------------------------ 
11  a   x    p 
41  b   y    q 
55  c   z    r 

그리고 로직 (추상적

여기에 표 1의 추상 구조의) :

IF (dec_id IS IN Table1) { 
    LEFT JOIN Table1 on (dec_id = table1.id); 
    LEFT JOIN Table2 on (rec_id = table2.id); 
    FLAG = 1; 
} ELSE { 
    LEFT JOIN Table1 on (rec_id = table1.id); 
    LEFT JOIN Table2 on (dec_id = table2.id); 
    FLAG = 0; 
} 
LEFT JOIN Table3, Table4, ... 

결과가 하나 이상의 쿼리로 PHP에서 달성 될 수 있지만, 나는하고 싶다. 가능한 한 능률을 위해 그것을 피하십시오; 불행히도 내 SQL 지식 나를 실패. 사전에

감사합니다!

답변

0

이와 비슷한 제품을 찾고 계십니까?

SELECT COALESCE(t2.id, t3.id) id, 
     (t2.id IS NOT NULL) flag, 
     COALESCE(t2.name, t3.name) name, 
     COALESCE(t2.data1, t3.data1) data1 
    FROM table1 t1 LEFT JOIN table2 t2 
    ON t1.dec_id = t2.id LEFT JOIN table3 t3 
    ON t1.rec_id = t3.id 

는 여기에 내가 찾고 대단히 감사합니다 정확히 무엇을 그 SQLFiddle 데모

+0

입니다! – user2758437

+0

@ user2758437 대단히 환영합니다. 내가 도울 수있어서 기뻐. :) – peterm