문자열 데이터를 합쳐서 컬럼 데이터로 가져오는 sql문
api를 만들던 중
각각의 고유 인덱스를 가지고 있는 데이터를 모두 다 합쳐서 한 개의 새로운 컬럼 데이터로 만들고 싶었다.
원래 sql 문
-- 주문 상세 정보 가져오기
select o.status, o.orderNumber, o.createdAt, u.userName, u.phone, o.address, p.packagingType, flowerName,
o.reservationDate, o.comment, o.paymentMethod, o.totalPrice, o.receive
from orders o
join user u
on o.userId = u.id
join cart c
on o.cartId = c.cartId
join package p
on c.packageId = p.packageId
join size s
on c.sizeId = s.sizeId
join addFlower af
on o.cartId = af.cartId
join flower f
on af.flowerId = f.id
where o.orderId = 43 and o.userId = 17;
- 중복으로 데이터를 다 가져온다.
변경한 sql문
- group_concat 사용
- separator 사용
-- 주문 상세 정보 가져오기
select o.status, o.orderNumber, o.createdAt, u.userName, u.phone, o.address, p.packagingType,
group_concat(
distinct f.flowerName
order by f.flowerName
asc separator ',') as orderFlower,
o.reservationDate, o.comment, o.paymentMethod, o.totalPrice, o.receive
from orders o
join user u
on o.userId = u.id
join cart c
on o.cartId = c.cartId
join package p
on c.packageId = p.packageId
join size s
on c.sizeId = s.sizeId
join addFlower af
on o.cartId = af.cartId
join flower f
on af.flowerId = f.id
where o.orderId = 43 and o.userId = 17;-- 주문 상세 정보 가져오기
select o.orderId, o.createdAt, o.status, p.packagingType,
group_concat(
distinct f.flowerName
order by o.orderId
asc separator ',') as orderFlower,
c.quantity, s.sizeType, o.totalPrice, o.receive,
case
when group_concat(
distinct f.flowerName
order by f.flowerName
asc separator ',') = '근조화환' then p.secondPackagePhotoUrl
else p.firstPackagePhotoUrl
end as packageUrl
from orders o
join user u
on o.userId = u.id
join cart c
on o.cartId = c.cartId
join package p
on c.packageId = p.packageId
join size s
on c.sizeId = s.sizeId
join addFlower af
on o.cartId = af.cartId
join flower f
on af.flowerId = f.id
where o.userId = 17
group by o.orderId
order by o.createdAt desc;
- 꽃이름을 한 번에 가져온다.
'MySQL Workbench' 카테고리의 다른 글
[MySQL] 테이블 인덱스 번호를 다시 1부터 하는 방법 (0) | 2024.06.05 |
---|---|
[MySQL] DB에 저장되어 있는 데이터 파일로 저장하는 방법 (0) | 2024.05.28 |
[MySQL] 지정된 DB에만 전용으로 접속할 수 있는 계정 만들기 (0) | 2024.05.20 |
[MySQL] SQL의 like 와 문자열 컬럼에 fulltext 설정 (0) | 2024.05.20 |
[MySQL] 화면 기획서보고 필요한 SQL문 만들기 _영화 리뷰 서비스 (0) | 2024.05.20 |