@survivor2005

Объединить 2 таблицы БД?

Господа, подскажите, как сделать запрос в бд, что правильно объединить 2 таблицы.
Первая таблица product(id, name, price, .....)
Вторая images (id, img_src, img_alt, ...)
Мне надо, что бы у каждого продукта был массив с фоткми, так как несколько фоток относятся к одному продукту. Но на выходе у меня получается сколько фоток относится к продукту, столько раз повторяется данный продукт. Как только не пытался. Вот один из вариантов:
SELECT images.image_src, images.image_alt, product.*
from product
LEFT JOIN images on images.prod_id = product.id

В базе всего 2 товара, я получаю 6, так как на каждую фотку плодится отдельный массив продукта, а мне надо что у одного продукта был массив с фотками относящихся к нему. Прошу сразу прощения, я не знаю особо как делаются запросы, но времени читать талмуды на данный момент совсем нет.
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
@survivor2005 Автор вопроса
Решил проблему конкатинацией.
SELECT product.*, GROUP_CONCAT(images.image_src) AS img from product left join images on images.prod_id=product.id GROUP BY product.id
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
В принципе вы можете воспользоваться аггрегатными функциями базы данных.
Например так:
SELECT 
  JSON_ARRAYAGG(
    JSON_OBJECT(
      'image_src', images.image_src, 
      'image_alt', images.image_alt
    )
  ) image, 
  product.* 
FROM product 
LEFT JOIN images ON images.prod_id = product.id 
GROUP BY 
  product.id, 
  product.name;


Проверить SQL запрос
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы