매핑 테이블 Multiple 조인 관련 질문입니다. 0 4 129

by 찡스쿄 [MySQL] mysql join 조인 매핑 테이블 [2020.11.20 16:21:35]


캡처.PNG (13,061Bytes)
캡처.PNG (128,323Bytes)

안녕하세요, 선배님들.

여행 관련 시스템을 구축 중입니다.

대략적인 테이블 구조는 파일로 첨부하였고,

쿼리는 내용 가장 하단에 첨부하였습니다.

원하는 결과는 두 번째 이미지 파일에 첨부한 두 개의 테이블을 조인한 결과인데요,

매핑(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인 데이터 */

 

by 마농 [2020.11.20 16:45:29]

맵핑테이블 설계가 3가지 매핑으로 되어 있는데.
두가지만 가지고 맵핑해야 하는게 아닌지요?
(여행지 - 관광지) 또는 (여행지 - 맛집) 또는 (맛집 - 관광지)
쿼리를 보니 여행지나 맛집 중에 하나만 들어오도록 설계한 모양이네요.
어차피 주변관광지 검색이나 주면 맛집 검색은 그 용도가 다르니
한번에 조회할 이유가 없을 것 같습니다.
맵핑 테이블도 하나로 관리할게 아니라 필요한 용도에 따라 분리해야 하지 않을까요?


by 찡스쿄 [2020.11.20 16:57:12]

마농 선생님 답변 감사드립니다. ^^

현재, 특정 관광지를 클릭하면

매핑 테이블에서 관광지 번호를 FK로 가지고 있는

맛집 리스트와 관광지 리스트를 한 화면에서 뿌려주고 있습니다.

리스트 객체 하나에 맛집과 관광지 정보를 담아주고 싶어서요 ^^..

매핑-관광지, 매핑-맛집 각각을 LEFT 조인으로 묶어서 인라인 뷰 서브쿼리로 묶을까도 생각해 보았지만

별로 효율적인 방법이 아닌 것 같아 조언을 얻고자 질문을 올렸습니다..

질문 내용 하단에 화면 구조를 이미지로 첨부했습니다!


by 마농 [2020.11.20 18:20:38]

한 화면이라고 한 쿼리로 하란 법은 없습니다.

화면도 분할 화면으로 구성되어 있네요.


by 찡스쿄 [2020.11.20 18:42:48]

답변 감사드립니다. 마농 선생님 ^^..

여러모로 예전부터 도움 많이 받고 있네요~

행복한 주말 되시길 바랍니다!

감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입