У меня есть две таблицы MySQL. Это первый [продукты] (ПЕРВИЧНЫЙ = Id):SQL-запрос для выбора отдельных строк из левой таблицы после внутреннего соединения в правой таблице
[id] | title | description
, и это вторые [размеры] (ПЕРВИЧНЫЙ = идентификатор & размера):
[id] | [size]
size
может иметь только значения из [1,2,3,4,5,6]
,
У меня есть массив PHP, который имеет значения размера. Я перекроить его разделенных запятыми значений строки следующим образом:
$size_list = implode(",", $sizes);
Для тех, кто не знаком с PHP, приведенный выше код будет генерировать строку, как это: «1,4,5», а затем запросить база данных:
$query = "SELECT t1.id,t1.title,t1.description,t2.size FROM products t1 INNER JOIN sizes t2 ON t1.id=t2.id WHERE size IN(".$size_list .")";
Но этот запрос реплицирует продукты для каждого размера, который они имеют в таблице размеров. Я хочу:
Возврат записей из таблицы товаров, которые имеют по крайней мере один доступный размер в таблице размеров, без дублировать
и конечно
хотите, чтобы эти размеры в переменной, чтобы показать клиент
Например:
продукты:
1 | product1 | description1
2 | product2 | description2
3 | product3 | description3
4 | product4 | description4
Размеры:
1 | 1
1 | 2
1 | 4
1 | 5
2 | 1
2 | 5
Учитывая $sizes_list="1,2"
, что я хочу, как результат:
1 | product1 | description1 | 1,2,4,5
2 | product2 | description2 | 1,5
Да, сменил ответ –
OMG, я думаю, что в этом вопросе что-то не так, о чем я не упоминал. Я думаю, что «он не перечисляет все размеры для продукта. Он имеет размеры, которые находятся в $ size_list'. я ошибаюсь? – Trix
wait a sec, я должен проверить –