Как запросить из БД несколько картинок для одного товара?

Для каждого товара имеется слайдер. В нём несколько картинок. Вот таблица с товарами:
CREATE TABLE doob.goods (
  id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  id_category varchar(255) NOT NULL,
  name varchar(50) DEFAULT NULL,
  description varchar(255) DEFAULT NULL,
  price decimal(19, 2) DEFAULT 0.00,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 6
AVG_ROW_LENGTH = 3276
CHARACTER SET utf8
COLLATE utf8_general_ci
ROW_FORMAT = DYNAMIC;

Затем я сделал табличку для картинок товара. Тут good_id — это id определённого товара, а link — ссылка на картинку:
CREATE TABLE doob.images (
  good_id int(10) UNSIGNED DEFAULT NULL,
  link varchar(255) DEFAULT NULL,
)
ENGINE = INNODB
AVG_ROW_LENGTH = 4096
CHARACTER SET utf8
COLLATE utf8_general_ci
ROW_FORMAT = DYNAMIC;

Потом я сделал процедуру для получения списка продуктов из определённой категории:
PROCEDURE doob.catalog_get_products_in_category(IN inCategoryId int)
BEGIN
SELECT g.id, g.name, g.description, g.price FROM goods g
    INNER JOIN category c
                 ON g.id_category = c.id
    WHERE      c.id = inCategoryId
    ORDER BY   g.id DESC;
END


Но я не могу сообразить как в одном запросе мне получить помимо основных данных g.name, g.description, g.price ещё и все ссылки к этому товару?
Если обращаться к таблице с изображениями в отдельной процедуре, то придётся как-то вытаскивать good_id нужного товара, а потом ещё и скреплять это всё с остальным массивом.

Не подскажите, дорогие знатоки, как можно это сделать попроще?
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Какой смысл делать хранимку для таких простых запросов?
Зачем делать JOIN с таблицей `category`, которая не используется в результате.
SELECT `g`.`id`, `g`.`name`, `g`.`description`, `g`.`price`, `i`.`images`
  FROM `goods` AS `g`
  LEFT JOIN (
    SELECT `good_id`, GROUP_CONCAT(`link` SEPARATOR ',') AS `images`
    FROM `images`
    GROUP BY `good_id`
  ) AS `i` ON `i`.`good_id` = `g`.`id`
  WHERE  `g`.`id_category` = :category
  ORDER BY `g`.`id` DESC;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
coderisimo
@coderisimo
Я бы создал для каждого товара папку с именем в виде ID товара и просто получал бы список файлов из заданного каталога. Т.е база данных вообще не использовалась бы для хранения ссылок на картинки.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 11:20
1000 руб./за проект
25 апр. 2024, в 11:02
5000 руб./за проект
25 апр. 2024, в 10:42
150000 руб./за проект