mysql 특정 컬럼 값에 따라 다른 테이블과 조인하려고 합니다 0 4 1,613

by YUN 조인 특정 [2016.08.07 01:01:04]


 GROUP 테이블

INDEX

GROUP
1 A
2 B
3 C

A테이블

GROUP NUM TYPE
A 1  
A 2 s
A 3 s
A 4  

B테이블.. C테이블도 같은 구조로 존재

(세부 테이블에 group값이 꼭 있어야 하는 건 아닙니다. 조인할때 편할까해서 넣어놨습니다)

그룹 테이블이 있고 각 그룹마다 세부 테이블이 존재합니다

이를 활용해서 전체 시스템 뷰를 생성하려는데

컬럼값이 A라면 A테이블과 조인하고 C라면 C테이블과 조인해서

전체적으로 아래와 같은 뷰를 만들려고 합니다(보안 문제로 테이블은 값을 건드리지 않기 위함입니다)

GROUP NUM
A 1
A 2
A 3
A 4
B 1
B 2
B 3
C 1
C 1

가능한가요

by jkson [2016.08.08 07:58:28]

제가 잘 이해한 건지 모르겠지만

값에 따라 조인 대상 테이블이 다르다면

union all 쓰시면 될 것 같은데요.

..

grouptable a, atable b

where a.group = b.group

and a.group = 'A'

union all

..

grouptable a, btable b

where a.group = b.group

and a.group = 'B'

..

그런데 실제로 테이블 구조가 저런 것은 아니죠?

결과 값만 보면 grouptable은 필요하지 않은 것 같은데..


by YUN [2016.08.08 09:58:12]

실제로 저렇습니다...

프로그램내에서 새 그룹을 입력받으면 자동으로 db에 그룹을 추가하고 그 그룹에 대한 데이터가 있는지 검증후 불러오는 구조여서

그룹 테이블을 추가해준겁니당

 

조인할때 필요할까 해서 세부 테이블에 group이 있긴 하지만

원하는 구조는

A테이블에는 num/type만 있는 구조입니다.


by jkson [2016.08.08 16:23:51]

union all로 해결이 안 되는 건가요? 제가 질문을 잘 이해 못한 것인지요? 이해력이 많이 딸려서..;


by 마농 [2016.08.12 17:24:18]
SELECT 'A' group, num, type FROM table_A
UNION ALL SELECT 'B' group, num, type FROM table_B
UNION ALL SELECT 'C' group, num, type FROM table_C

 

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