SQL문에서 2단 JOIN 이상 한 상태에 해당값이 없으면 JOIN된 해당값 가져오기

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
SQL문에서 2단 JOIN 이상 한 상태에 해당값이 없으면 JOIN된 해당값 가져오기

QA

SQL문에서 2단 JOIN 이상 한 상태에 해당값이 없으면 JOIN된 해당값 가져오기

본문

contents 테이블

r_wr_id bo_table title
23 free  
45 game '안해요'

 

g5_write_free 테이블

wr_id at_create subject
23   '안녕하세요'
     

 

g5_write_game 테이블

wr_id at_create subject
45   '게임해요'
     

 

 

SELECT *

FROM contents AS C 
LEFT JOIN g4_write_free AS F
ON (C.r_wr_id = F.wr_id) 
LEFT JOIN g4_write_game AS G 
ON (C.r_wr_id = G.wr_id) 
WHERE C.r_bo_table = "free" OR C.r_bo_table = "game"

 

 

 contents 테이블 기준으로 

LEFT JOIN 해서 출력하는 SQL문입니다.

 

매칭 경우는 contents 테이블의 r_wr_id 와 해당 테이블의 wr_id로 매칭하게 됩니다.

 

문제는 만약 contents의 테이블의 title NULL 값이면

해당 테이블 JOIN한 매칭된 subject 값을 가져올려고 합니다.

 

반대로 contents의 테이블의title값이 있다면 그냥 여기서 가져올려고 합니다.

 

일단 제가 고민한것은

 

IFNULL(C.title, subject) AS title  

 를 이용해서 할려고 하지만 

 

JOIN 한게 2개 이상이라 이렇게는 안되네요 ㅠ,ㅠ

 

혹시 좋은 방법은 없을까요?

 

 

이 질문에 댓글 쓰기 :

답변 2

일단 2개의 테이블을 조인한것을 하나의 가상 테이블로 만들어 - 인라인 테이블 - 그 임시 테이블과 조인하시면 저런식으로 쿼리 가능합니다.

union all 을 쓰시는게 좋을것 같은데, 만약 union all 을 쓰기 힘들다면

IFNULL(C.title, IFNULL(F.subject, G.subject)) AS title   

과 같이 ifnull 함수를 두번 써주면 될것 같네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 1,515
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT