需要帮助创建基于 ui 过滤器值的查询

Need help creating a query based on ui filter values

自从我们的网上商店推出以来已经几个月了,我们仍在创造新的亮点,以使访问者更容易浏览目录。

目前我们正在尝试添加一个按产品规格过滤的过滤器。

假设下一个选项可用

内存

  1. 8 GB
  2. 12GB

处理器

  1. 英特尔
  2. AMD A
  3. AMD E

获取所有相关产品 ID 的 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 访问者将选择过滤器选项“8GB”、'AMD A' 和 'AMD E'。 所以他想获得 is/has (8 GB) AND ( (AMD A) OR (AMD E) ) 的产品。 这种方法是否正确?因为我们确定它应该 return 喜欢 17 产品,但是 SQL return 和 none 并没有产生任何错误。

有人能给我们指明正确的方向吗? :)

以上查询肯定不会给出结果。因为 lu_specifications.id = '60' 在一个地方并且 lu_specifications.id = '54' 包含在 AND 条件中。 它是一个列值,一次可以包含一个值,因此两个语句不能一起为 TRUE,从而导致 FALSE。

您可能想在以下位置使用 OR。 和 ( lu_specifications.id = '60' AND link_products_specifications.pres_value = '8 GB' ) ( ( lu_specifications.id = '54' AND link_products_specifications.pres_value = 'AMD A' ) 要么 ( lu_specifications.id = '54' AND link_products_specifications.pres_value = 'AMD E' ) )