@sportik174

Как объединить данные товара и фото товара в одном запросе?

Есть таблица товара product:
id: 1
name: Товар 1


Есть таблица с фото товаров photos:
id: 1
product_id: 1
url: 'example.png'

id: 2
product_id: 1
url: 'example2.png'


Можно ли как-то объединить эти данные в одном запросе? чтобы получилось примерно вот так:
[
   {
      id: 1,
      name: 'Товар 1',
      photos: [
         {
            id: 1,
            url: example.png'
         },
         {
            id: 2,
            url: example2.png'
         }
      ]
   }
]
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
Данные можно агрегировать в базе данных. Вы не указали весию СУБД, поэтому привожу пример для PostgreSQL:

select products.id, products.name, jsonb_agg(url)
from products
left join products_photos on products.id = product_id
group by products.id, products.name

|----|---------|----------------------------------|
| id | name    | jsonb_agg                        |
|----|---------|----------------------------------|
| 1  | Товар 1 | ["example1.png", "example2.png"] |

https://sqlize.online/s/J2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Можно, через join этих двух таблиц.
Результатом запроса будет выборка:
(product_)id, (product_)name, (photo_)id, (photo_)url
1, 'Товар 1', 1, 'example.png'
1, 'Товар 1', 2, 'example2.png'

На стороне скрипта, который отправлял запрос SQL в СУБД, собираете на основе этой выборки объект с требуемой структурой, и потом перекодируете его в строку JSON.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы