Я бьюсь над этим, и я не прогрессирую. Я не очень хорошо разбираюсь в SQL, поэтому я надеюсь, что ответ - это нечто простое, чего я просто не знаю.
У меня есть 2 таблицы: одна называется "изображения", которая содержит данные, которые я хочу, с первичным ключом "imageID". Другой называется productPhotos и содержит два поля (плюс первичный ключ): imageID и productID. Таким образом, для данного продукта может быть несколько изображений, и данное изображение может использоваться для представления нескольких продуктов.
Пока все работает отлично, но тут возникает проблема. У меня есть динамически генерируемый список идентификаторов продуктов, и я хочу загрузить все изображения, которые представляют эти продукты. И я не только хочу их загружать, но я хочу, чтобы они были в порядке продуктов в моем списке.
Так что, если мой список продуктов "5,2,4", я хочу, чтобы мой список вывода состоял из сначала всех изображений для продукта 5, затем всех изображений для продукта 2, а затем всех изображений для продукта 4. Меня не особо волнует порядок в подгруппах.
Выбор правильных изображений довольно прост, но получить их в правильном порядке - отвратительно. Я понял, как получить идентификаторы изображений, которые я хочу, в правильном порядке, но на самом деле получение этих изображений без отдельного вызова MySQL до сих пор ускользало от меня. Я попытался создать временную таблицу, сохранить нужные идентификаторы в переменной @variable и множество различных вариантов ORDER BY FIELD () и ORDER BY FIND_IN_SET ().
Вот что у меня так далеко:
ВЫБЕРИТЕ ИЗОБРАЖЕНИЕ ИЗ ПРОДУКТАФотографии, ГДЕ ИДЕНТИФИКАЦИЯ ПРОДУКТА В (5,2,4) ЗАКАЗАТЬ ПО ПОЛЕ (конкретныйПродукт, 5,2,4);
Это успешно возвращает набор идентификаторов изображений в правильном порядке, но я зашел в тупик, пытаясь получить оттуда данные для этих идентификаторов изображений из таблицы изображений. Я знаю, что я мог бы сделать это довольно легко, просто используя два отдельных вызова базы данных в PHP (один для получения идентификаторов изображений, а другой для загрузки изображений), но (я думаю) это означало бы значительный удар по производительности, и это просто должен быть лучший способ сделать это.
Заранее спасибо за любую помощь.