Прошло уже несколько месяцев с момента запуска нашего интернет-магазина, и мы по-прежнему создаем новый bling, чтобы посетители могли легко просматривать каталог.
На данный момент мы пытаемся добавить фильтр, который фильтрует по спецификации продукта.
Предположим, что доступны следующие варианты
SQL, чтобы получить все соответствующие идентификаторы продукта, выглядит так:
SELECT `lu_specifications` . * , `app_products`.`id` AS product_id FROM ( `lu_specifications` ) LEFT OUTER JOIN `link_products_specifications` link_products_specifications ON `lu_specifications`.`id` = `link_products_specifications`.`specification_id` LEFT OUTER JOIN `app_products` app_products ON `app_products`.`id` = `link_products_specifications`.`product_id` LEFT OUTER JOIN `link_categories_products` product_link_categories_products ON `app_products`.`id` = `product_link_categories_products`.`product_id` WHERE `product_link_categories_products`.`category_id` =160 AND ( `lu_specifications`.`id` = '60' AND `link_products_specifications`.`pres_value` = '8 GB' ) AND ( ( `lu_specifications`.`id` = '54' AND `link_products_specifications`.`pres_value` = 'AMD A' ) OR ( `lu_specifications`.`id` = '54' AND `link_products_specifications`.`pres_value` = 'AMD E' ) )
В этом примере SQL посетитель выбрал бы опции фильтра «8 ГБ», «AMD A» и «AMD E». Поэтому он хотел бы получить продукт, у которого есть (8 ГБ) И ((AMD A) ИЛИ (AMD E)). Правильно ли этот метод? Поскольку мы уверены, что он должен возвращать как 17 продуктов, но SQL не возвращает ни одного, и он не генерирует никаких ошибок.
Может ли кто-нибудь указать нам в правильном направлении, пожалуйста? 🙂