Stack Overflow на русском Asked on November 10, 2021
Таблица такого вида:
|product_id| |atribute_id| | text |
| 1 | | 28 | |золото |
| 1 | | 29 | | 255 |
| 2 | | 28 | |серебро|
| 2 | | 29 | | 111 |
| 3 | | 28 | |золото |
| 3 | | 29 | | 455 |
Есть Вес atribute_id = 29 и материал atribute_id = 28, данные text получаю из формы:
$get_ves = $_POST['f__ves']; // Вес
$get_material = $_POST['f__material']; // Материал
Нужно получить массив product_id, в соответсвии с полученными данными, к примеру получили Золото и 255 и 455, поэтому должны получить $product_id со значениями 1 и 3.
ПРобовал выполнить вот такой sql запрос:
"SELECT * FROM `oc_product_attribute` WHERE (product_id, attribute_id, text) in(('" . $prod_id . "', 28, '" . $get_ves_item . "'), ('" . $prod_id . "', 29, '" . $get_materail_item . "')) "
Но получил только фильтрацию по (‘" . $prod_id . "’, 28, ‘" . $get_ves_item . "’) второй параметр IN не учелся почему то… ПОдскажите в чем проблема, заранее спасибо
Если у вас одно значение Материал
и массив значений Вес
, то:
SELECT product_id FROM oc_product_attribute
WHERE text IN ("золото", "серебро") AND product_id IN (
SELECT product_id FROM oc_product_attribute
WHERE atribute_id = 29 AND text IN (255, 455)
) GROUP BY product_id
Answered by Максим Степанов on November 10, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP