안녕하세요, 선배님들.
여행 관련 시스템을 구축 중입니다.
대략적인 테이블 구조는 파일로 첨부하였고,
쿼리는 내용 가장 하단에 첨부하였습니다.
원하는 결과는 두 번째 이미지 파일에 첨부한 두 개의 테이블을 조인한 결과인데요,
매핑(APP_MAP) 테이블을 기준으로 관광지(APP_RCM_TOUR) 테이블과
맛집(APP_RCM_RSTR) 테이블을 조인해서 데이터를 한 번에 가지고 오려고 합니다.
매핑 테이블에는 여행지, 관광지, 맛집 테이블의 FK가 포함되어 있고,
'A'라는 여행지 하나에 대해 관광지 매핑 레코드, 맛집 매핑 레코드가 추가됩니다.
즉, 하나의 여행지에는 N개의 관광지와 맛집이 존재할 수 있습니다.
이러한 경우에는 어떠한 형태로 조인을 해야 효율적인지 조언을 구하고 싶습니다.
이전에 마농 선생님께서 공통 조건은 WHERE 조건으로 빼라는 말씀을 하셨는데요.
두 번째 이미지의 좌측 테이블에서는 맛집 번호(rcm_rstr_nbr)를 IS NULL로 조회하고,
우측 테이블에서는 관광지 번호(rcm_tour_nbr)를 IS NULL로 조회하기 때문에
CASE 문을 이용할 수 있을까? 생각해 보았지만 통계 데이터가 아니기에 CASE 문은 사용할 수 없을 것 같습니다.
선배님들의 답변, 미리 감사드립니다.
추운 날씨, 감기 조심하세요!
select art.rcm_tour_nbr , art.tour_nm , art.rcm_tour_expl from APP_MAP am -- /* 공통으로 사용되는 테이블 */ left outer join APP_RCM_TOUR art -- /* 관광지 테이블 */ on am.rcm_tour_nbr = art.rcm_tour_nbr where am.rcm_trav_nbr = 2 -- /* 공통 조건 */ and am.rcm_rstr_nbr is null; /* 맛집 번호(FK)가 NULL인 데이터 */
select arr.rcm_rstr_nbr , arr.rcm_rstr_nm , arr.rcm_rstr_expl from APP_MAP am -- /* 공통으로 사용되는 테이블 */ left outer join APP_RCM_RSTR arr -- /* 맛집 테이블 */ on am.rcm_rstr_nbr = arr.rcm_rstr_nbr where am.rcm_trav_nbr = 2 -- /* 공통 조건 */ and am.rcm_tour_nbr is null; /* 관광지 번호(FK)가 NULL인 데이터 */