【发布时间】:2017-04-16 01:35:35
【问题描述】:
问题:
我如何获得所有Red 和尺寸S 的产品?
那意味着我只能得到产品2: Product (color:green,red => size:S)
说明:
我在从应用了某些过滤器的数据库中选择产品时遇到了问题。您将在下面找到我的表,并查看SQLfiddle 了解真正的 SQL。
表product:
id | title
------------------------------
1 | Product (color:green => size:S)
2 | Product (color:green,red => size:S)
3 | Product (color:red)
表filter
id | name
------------
1 | Color
2 | Size
表filter_value
id | filter_id | name
---------------------
1 | 1 | green
2 | 1 | red
3 | 2 | S
表product_filter_value
id | product_id | filter_id | filter_value_id
---------------------------------------------
1 | 1 | 1 | 1
2 | 1 | 2 | 3
3 | 2 | 1 | 1
4 | 2 | 1 | 2
5 | 2 | 2 | 3
6 | 3 | 1 | 2
要选择过滤值为red 的所有产品,我运行以下查询:
# ALL COLOR RED
SELECT p.*
FROM product p
LEFT JOIN product_filter_value pfv ON p.id = pfv.product_id
WHERE (pfv.filter_id IN ('1'))
AND (pfv.filter_value_id IN ('2'))
GROUP BY p.id
LIMIT 10 OFFSET 0;
要选择过滤值为S 的所有产品,我运行以下查询:
# ALL SIZE S
SELECT p.*
FROM product p
LEFT JOIN product_filter_value pfv ON p.id = pfv.product_id
WHERE (pfv.filter_id IN ('2'))
AND (pfv.filter_value_id IN ('3'))
GROUP BY p.id
LIMIT 10 OFFSET 0;
但是我如何获得所有Red 和尺寸S 的产品?
那意味着我只能得到产品2: Product (color:green,red => size:S)
【问题讨论】:
标签: mysql