mysql 테이블 3개 조인 및 중복 데이터 관련 0 2 1,689

by ksbgenius [2016.02.05 09:53:14]


 A테이블 : 사용자 정보

NO ID
1 홍길동
2 김길동
3 최길동

B테이블 : 권한별 사용자 정보

ROLE NO
A 1
B 1
C 1
D 2
E 2
F 3
G 3
H 4
I 5

C테이블 : 권한 테이블

ROLE ROLE_NAME ROLE_LEVEL
A 00
B 01
C 02
D 03
E 04
F 05
G 06
H 07
I 08

이렇게 3개의 테이블이 있습니다.

현재 사용자별로 권한이 여러개 있는 상황입니다.

예를 들어,

홍길동이라는 사람은 A,B,C라는 ROLE을 가지고 있습니다.

제가 A,B 테이블을 내부 조인하고 C테이블을 left join 시켰을때

SELECT *
  FROM (SELECT *
          FROM A a, B B
         WHERE a.NO = b.NO) A
       LEFT JOIN C c ON A.ROLE = c.ROLE;

 

웹쪽에서 사용자 목록보여주는 리스트에서
사용자별로 권한 정보를 같이 보여주고 싶어서 그러는데요

 

데이터가 이런 식으로 나오는데

NO ID ROLE ROLE_NAME ROLE_LEVEL
1 홍길동 A 00
1 홍길동 B

01

2 김길동 D 03

사용자별로 권한을 한방에 가져오는 방법이 없을까요?..

 

두서 없어서 죄송합니다... 

by 창조의날개 [2016.02.05 10:03:08]

 

사용자별로 권한을 한방에 가져 오고 싶다고 하셨는데..

 

이때 한방에 어떻게 가져올지가 안나와 있네요..

 

방법은 문자열로 합쳐서 하나로 만들어야 할거 같구요..

 

그렇지 않으면 횡으로 붙여서 컬럼으로 만들어야 겠죠..

 

일단 2가지 방법중 한가지를 선택 하셔야 하고요..

 

그냥 열로 붙이는 거라면 이미 다른 질문들에서 많이들 문자열 합치기가 있으니 찾아 보시면 될거 같구요..

 

열로 만든다면 가변적이기 때문에 쿼리만으로는 힘들고 프로그램에서 로직적으로 풀거나 함수를 따로 만들어서 사용해야 합니다..

 

좀더 연구를 해보시죠.. ^^

 

 


by ksbgenius [2016.02.05 10:14:46]

문자열로 합쳐가지고
나중에 웹쪽에서 분리해서 사용을 해야 겠군요...?ㅎ

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