Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按产品选项值筛选产品(Mysql查询)_Php_Mysql_Laravel - Fatal编程技术网

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 |