Php 按产品选项值筛选产品(Mysql查询)
我得到两个产品Php 按产品选项值筛选产品(Mysql查询),php,mysql,laravel,Php,Mysql,Laravel,我得到两个产品产品id[3,5] 现在我用期权价值来过滤这些产品 我的过滤器选项\u值[m] 在这里,m选项\u值存在于产品id 3中,但不存在于产品id 5,因此仅显示产品id 3 再次过滤选项\u值[红色] 在这里,red选项\u值出现在产品id 3和5中,因此我的所有GET产品都显示为产品id 3,5 最后,过滤选项\u值[m,红色] 这里,m和redoption\u值出现在product\u id 3但是moption\u值出现在product\u id 5和red 选项\u值不在产品i
产品id[3,5]
现在我用期权价值来过滤这些产品
我的过滤器选项\u值[m]
在这里,m
选项\u值
存在于产品id 3
中,但不存在于产品id 5
,因此仅显示产品id 3
再次过滤选项\u值[红色]
在这里,red
选项\u值
出现在产品id 3和5中
,因此我的所有GET产品都显示为产品id 3,5
最后,过滤选项\u值[m,红色]
这里,m
和red
option\u值
出现在product\u id 3
但是m
option\u值出现在product\u id 5
和red
选项\u值
不在产品id 5
中,因此将产品id显示为空
这意味着,我得到的产品的选项值与过滤器option\u值相同
如何编写这个mysql查询
我的筛选选项\u值[m]在这里,m选项\u值存在于产品\u id中
3但不存在于产品标识5中,因此仅显示产品标识3
查询
id | product_id | option | option value
-------------------------------------------
1 | 3 | size | m
2 | 3 | color | red
3 | 3 | brand | apple
4 | 5 | color | red
5 | 5 | weight | 16m
6 | 6 | size | m
结果
SELECT
Table1.product_id
FROM
Table1
WHERE
table1.product_id IN(3, 5)
GROUP BY
Table1.product_id
HAVING
SUM(Table1.option_value = 'm') = 1
见演示
同样,在此处过滤选项_值[red],在中过滤红色选项_值
产品标识3和5,所以我的所有GET产品都是show product标识3,5
查询
| product_id |
|------------|
| 3 |
结果
SELECT
Table1.product_id
FROM
Table1
WHERE
table1.product_id IN(3, 5)
GROUP BY
Table1.product_id
HAVING
SUM(Table1.option_value = 'red') = 1
请参见演示我对选项_值是数组还是单值选项_值是数组有疑问我已经发布了SQL的答案:查询为什么要获取前两个筛选器选项。。。我不完全理解第三种过滤条件,你能详细说明一个输出示例吗?“这意味着,我得到的产品的期权价值与过滤器期权价值相同”这意味着什么和输出??“所以显示产品标识为空”为空您的意思是显示空?对不起,有一个问题,我过滤了我的产品,哪个选项的值为[m,红色]。。。如果两个选项值与现有过滤器产品匹配,我将认为产品行的第三个条件结果为空,因为过滤器产品上不存在两个选项值。第三个条件结果为空,因为过滤器产品上不存在两个选项值
| product_id |
|------------|
| 3 |
| 5 |