2013-11-27 2 views
0
I have Two tables : 
    Table1, Table2 

나는 내부가이 테이블에 <> 0 조건 에 을 기반으로 세 개의 열 조인이있는 SQL 쿼리를 작성해야에 따라 조인. 내 조건은MySQL의 내부가 비어 있지 않은 열

if(table1.ID != 0), then inner join on table1.ID = table2.ID else, 

    if(table1.MemberID != 0), then inner join on table1.MemberID = table2.MemberID else, 

    inner join on table1.PersonID = table2.PersonID 
+0

여기서 내부 결합이 필요합니까? 왼쪽 조인은 존재하지 않는 값을 가진 상황을 처리 할 수 ​​있습니다. –

+0

@Goran Stuc : 예이 경우에는 내부 조인이 필요합니다. 두 필드를 모두 일치시켜야합니다. –

+0

왜 각 조건에 대해 OR을 사용하여 결합하지 마십시오 – sumit

답변

1

조인 절에 조건문 (예 : 경우)을 사용할 수 있습니다.

select t1.*, t2.* 
from table1 t1 
inner join table2 t2 on 
      (case when 
       t1.ID != 0 
       then t1.ID =t2.Id 
       else 
       case when t1.MemberId !=0 
         then t1.MemberId = t2.MemberId 
         else 
          t1.PersonId = t2.PersonId 
        end 
      end) 

0

이 작동합니다 SqlFiddle를 참조하십시오.

select * 
from Table1, Table2 
where table1.Personid = table2.personId 
and (((Table1.id != 0) and (Table1.id = table2.Id)) 
or ((Table1.memberid != 0) and (Table1.memberid = table2.memberId))) 
관련 문제