tibero(oracle) Aggr_concat(DISTINCT...) + UNION 관련 질문 있습니다. 0 3 1,257

by 벌댕 [Tibero] TIBERO [2021.07.30 10:49:31]


안녕하세요 쿼리 작성중 이해가 안가는 부분이 있어서 질문드립니다.

여러가지 테이블을 조인하면서 사용자가 여러가지 값을 가지는 경우가 있습니다.

사용자테이블이 있고

분류테이블 분류iD(A), 분류1(B), 분류2(C)가 있다고 가정했을때 

사용자아아디 사용자이름 사용자분류목록
001 홍길동 분류1, 분류2, 분류5, 분류8

001 홍길동 

(WHERE은 분류ID와 사용자정보를 가진 테이블을 통해서 일치하게 만들었습니다)

 

분류1과 분류2를 같이 넣어야해서

SELECT A.USERID AS 사용자아이디
,Aggr_Concat(B.B  || ', ' || B.C) AS 분류
FROM 사용자테이블 A, 분류테이블 B

이런식으로 넣어서 사용하고있었습니다 

 

하지만 중복제거를 해야해서 DISTINCT를 찾았고

SELECT A.USERID                    AS 사용자아이디
      ,Aggr_Concat(DISTINCT B.B)   AS 분류1
 FROM 사용자테이블 A, 분류테이블 B

문제는 현재 제가 사용한 야매 쿼리로는 DISTINCT 적용이 안되다보니

UNION을이용해서

 

SELECT A AS 분류아이디,  B AS 분류항목 FROM 분류테이블
UNION
SELECT A AS 분류아이디 , C AS 분류항목 FROM 분류테이블

이런식으로 데이터를 합치는건 되었는데

Aggr_Concat(DISTINCT....) 와 합치기 위해서 여러가지 방법을 사용해봤는데 너무 어려운것같습니다..ㅠㅠ

혹시 더 좋은 쿼리가 있는지 말씀해주시면 감사하겠습니다

 

by 마농 [2021.07.30 13:13:19]
SELECT a.userid
     , AGGR_CONCAT(DISTINCT b.b) x
  FROM 사용자테이블 a
     , (SELECT a, b FROM 분류테이블
         UNION ALL
        SELECT a, c FROM 분류테이블
        ) b
 WHERE -- 조인 조건은 없나요? --
 GROUP BY a.userid
;

 


by 벌댕 [2021.07.30 13:42:28]

아 진짜 감사합니다 잘 해결되었어요!

FROM 사용자테이블 a
     , (SELECT a, b FROM 분류테이블
         UNION ALL
        SELECT a, c FROM 분류테이블
        ) b

 

이런식으로 서브쿼리 사용하는게 잘 이해가 안갔는데 이 부분까지 올려주신 내용 보니까 이해가 잘 갔습니다!!

조인 조건은 관련된 테이블이 많아서 혼란을 드릴까봐 생략했었습니다


by 마농 [2021.08.03 09:50:05]

생략된 질문이 오히려 혼란을 줍니다.
- 간략하게 축소하는 것은 좋지만
- 중요 정보를 누락하는 것은 좋지 않습니다.

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