group_concat replace 질문 0 2 1,091

by 밍밍밍밍 [CUBRID] 큐브리드 group_concat [2021.01.21 17:03:18]


안녕하세요. 큐브리드 질문남겨드립니다.

group_concat으로 조회한 쿼리를 replace 시켜주고 싶습니다.

 

SELECT group_concat(idx) aa FROM TABLEA

 

조회한 결과값입니다.

NO aa
1 7,8,9

 

위 조회한 결과값을 TABLEB에 들어있는 한글명으로 바꾸려고 합니다.

NO aa
1 사과,귤,포도

 

 

TABLEB의 구조는 이렇게 되어있습니다

No idx idxNm
1 7 사과
2 8
3 9 포도

 

2번째 표처럼 결과값을 얻고싶은데 쿼리로 한번에 가능할까요?

by 마농 [2021.01.21 17:22:28]
-- MariaDB 10.4 에서 Test --
WITH tablea AS
(
SELECT 1 no, '7,8,9' aa
UNION ALL SELECT 2, '8,10,1'
)
, tableb AS
(
SELECT 1 no, 7 idx, '사과' idxnm
UNION ALL SELECT 2, 8, '귤'
UNION ALL SELECT 3, 9, '포도'
UNION ALL SELECT 4, 1, '배'
UNION ALL SELECT 5, 10, '레몬'
)
SELECT a.no
     , a.aa
     , GROUP_CONCAT(b.idxnm ORDER BY INSTR(CONCAT(',', a.aa, ','), CONCAT(',', b.idx, ','))) bb
  FROM tablea a
 INNER JOIN tableb b
    ON INSTR(CONCAT(',', a.aa, ','), CONCAT(',', b.idx, ',')) > 0
 GROUP BY a.no, a.aa
;

 


by 마농 [2021.01.26 09:03:45]

아! 제가 질문을 잘못 보고 답변 드렸네요.
원본이 '7,8,9' 가 아니었군요. '7,8,9'도 group_concat 의 결과였네요?
단순 idx 조인후 idxnm 을 group_concat 하면 되는 거였네요.
 

-- MariaDB 10.4 에서 Test --
WITH tablea AS
(
SELECT 1 no, 7 idx
UNION ALL SELECT 1,  8
UNION ALL SELECT 1,  9
UNION ALL SELECT 2,  8
UNION ALL SELECT 2, 10
UNION ALL SELECT 2,  1
)
, tableb AS
(
SELECT 1 no, 7 idx, '사과' idxnm
UNION ALL SELECT 2, 8, '귤'
UNION ALL SELECT 3, 9, '포도'
UNION ALL SELECT 4, 1, '배'
UNION ALL SELECT 5, 10, '레몬'
)
SELECT a.no
     , GROUP_CONCAT(a.idx   ORDER BY a.idx) aa
     , GROUP_CONCAT(b.idxnm ORDER BY a.idx) bb
  FROM tablea a
 INNER JOIN tableb b
    ON a.idx = b.idx
 GROUP BY a.no
;

 

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