【发布时间】:2015-07-14 09:45:27
【问题描述】:
自我们的网上商店推出以来已经过去几个月了,我们仍在创造新的 bling 以使访问者更容易浏览目录。
目前我们正在尝试添加一个按产品规格过滤的过滤器。
假设下一个选项可用
内存
- 8 GB
- 12 GB
处理器
- 英特尔
- AMD A
- AMD 电子
目前获取所有相关产品 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”。 所以他想得到一个/具有(8 GB)和((AMD A)或(AMD E))的产品。 这种方法正确吗?因为我们确定它应该返回 17 个产品,但 SQL 没有返回任何产品,并且不会产生任何错误。
有人能指出我们正确的方向吗? :)
【问题讨论】:
-
过滤器选项“8GB”和比较“8GB”是拼写错误还是有一个空格,而另一个没有?
-
啊,这只是一个错字:)。我会纠正它。在脚本中,它始终带有空格,因为它们是由 filter_option_id 加载的...