Json ArrayAgg(객체의 value를 배열로 묶기)

정인호·2022년 10월 2일
0

신상품 리스트를 불러오는데 한 상품당 이미지 url이 3개씩 들어가 있었다. 이를 불러오니 똑같은 상품이 3번씩 불러와졌다. 이를 해결하기 위해 구글링을 해보니 jsonArrayAgg란 것을 알게 됐는데, 이 함수는 객체를 배열로 묶어주는 역할을 한다고 했다. 이를 적용해보니 3개씩 나오던 상품이 1개씩 제대로 프론트로 전달되었다. 코드는 아래와 같다.

SELECT
        items.id,
        items.name,
        items.description,
        JSON_ARRAYAGG(item_images.image_URL) as image_URL
        FROM items
            INNER JOIN item_images
                ON items.id = item_images.item_id
            INNER JOIN tags_items
                ON tags_items.item_id = items.id
            WHERE tags_items.tag_id = 1
            GROUP BY items.name

배열로 묶으려는 column에 JSON_ARRAYAGG함수를 적용하고, 조건절 뒤에 GROUP BY를 쓴다. GROUP BY에는 내가 배열로 묶으려는 column이 현재 inner join으로 items table에 들어가 있으므로, 이를 기준으로 묶어준다는 뜻으로 해석할수 있는 것 같다. 하지만 JSON_ARRAYAGG가 GROUP BY를 대신하기 위해 쓴다고 들어서 GROUP BY를 지워 보았으나 GROUP BY가 필요하다는 에러문이 콘솔에 찍혔다. 그래서 어떤게 맞는지 의문점이 생겼다. 이에 대한 공부가 더 필요해 보인다.

profile
경제학과를 졸업후 개발에 뛰어든 햇병아리입니다.

0개의 댓글