ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๐Ÿ’ก GROUP_CONCAT ๋ช…๋ น์–ด

SELECT ์˜ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ์—ฌ๋Ÿฌ ํ–‰์˜ ํŠน์ • ์ปฌ๋Ÿผ์„ ํ•œ์ค„๋กœ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (NULL ๊ฐ’์€ ์ œ์™ธ)

 

๐Ÿ’ก ์‚ฌ์šฉ๋ฐฉ๋ฒ•

GROUP_CONCAT([DISTINCT][expr, column][ORDER BY column DESC][SEPARATOR '๊ตฌ๋ถ„์ž'])

 

๐Ÿ’ก ์‚ฌ์šฉ์˜ˆ์‹œ

์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ๊ณผ ๋ฒˆํ˜ธ ์ปฌ๋Ÿผ์ด ์žˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฉ”์ผ๊ณผ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฉ”์ผ๊ณผ ๋ฒˆํ˜ธ์˜ ํ…Œ์ด๋ธ”์€ ๊ฐ๊ฐ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”๊ณผ ์ฐธ์กฐํ•˜๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค. ์‚ฌ์šฉ์ž๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ๊ณผ ๋ฒˆํ˜ธ๋ฅผ ์ „๋ถ€ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ด๋ฉ”์ผ๊ณผ ๋ฒˆํ˜ธ์˜ ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒํ•œ ๊ฐ’์„ ๊ตฌ๋ถ„์ž :: ๋กœ ํ•ฉ์ณ ์ถœ๋ ฅํ•˜๋„๋กํ•˜์˜€๋‹ค.

๊ท€์ฐฎ์œผ๋‹ˆ๊นŒ ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ํ…Œ์ด๋ธ”๊ณผ ํšŒ์› ํ…Œ์ด๋ธ”๋งŒ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰ํ•˜๊ฒ ๋‹ค.

CREATE TABLE `member` (
    `member_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `id` varchar(50) NOT NULL,
    `pw` varchar(50) NOT NULL
);
CREATE TABLE `phone` (
    `phone_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `member_id` INT NOT NULL,
    `phone_number` TEXT NOT NULL,
    FOREIGN KEY (`member_id`) REFERENCES `member` (`member_id`) ON DELETE CASCADE
);

 

๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ง‘์–ด๋„ฃ์–ด์ค€๋‹ค.

INSERT INTO member(id, pw) values('id1', '1234');
INSERT INTO member(id, pw) values('id2', '1234');
INSERT INTO member(id, pw) values('id3', '1234');
INSERT INTO member(id, pw) values('id4', '1234');
INSERT INTO member(id, pw) values('id5', '1234');


INSERT INTO phone(member_id, phone_number) values('1', '010-1224-4545');
INSERT INTO phone(member_id, phone_number) values('2', '010-4535-3535');
INSERT INTO phone(member_id, phone_number) values('2', '010-0245-5475');
INSERT INTO phone(member_id, phone_number) values('4', '010-5566-3634');
INSERT INTO phone(member_id, phone_number) values('5', '010-8863-2052');
INSERT INTO phone(member_id, phone_number) values('5', '010-0747-7899');

member ํ…Œ์ด๋ธ”
phone ํ…Œ์ด๋ธ”

select
  m.id,
  m.pw,
  (select group_concat(phone_number separator '::') 
  from phone 
  where member_id = m.member_id 
  	group by member_id) as phone
from member as m;

๊ฒฐ๊ณผ

๊ตฌ๋ถ„์ž๋กœ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒŒ์‹œํŒ ๊ฐ™์€ ๊ณณ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๊ฒฝ์šฐ์— ์ด๋ ‡๊ฒŒ ๋ฝ‘์•„์„œ ๊ตฌ๋ถ„์ž๋กœ ๋‹ค์‹œ ๋‚˜๋ˆ„์–ด์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€