Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Mysql , '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '36', '2' '36', '2' '66', '2' '66', '2' '66', '2' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '310', '6' '310', '6' '310', '6' '516', '6' '516', '6' '516', '6'_Mysql_Laravel_Filter_Attributes_Shop - Fatal编程技术网

Mysql , '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '36', '2' '36', '2' '66', '2' '66', '2' '66', '2' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '310', '6' '310', '6' '310', '6' '516', '6' '516', '6' '516', '6'

Mysql , '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '36', '2' '36', '2' '66', '2' '66', '2' '66', '2' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '310', '6' '310', '6' '310', '6' '516', '6' '516', '6' '516', '6',mysql,laravel,filter,attributes,shop,Mysql,Laravel,Filter,Attributes,Shop,23/249等值对于返回的产品无效。我得到了我需要的额外值,但我也得到了这些值。在示例查询中,您需要做的就是用子查询替换产品id列表 SELECT * FROM product_attributes WHERE product_id IN ( SELECT DISTINCT product_id FROM product_attribut

23/249等值对于返回的产品无效。我得到了我需要的额外值,但我也得到了这些值。

在示例查询中,您需要做的就是用子查询替换产品id列表

SELECT *
FROM   product_attributes
WHERE  product_id IN
                      (
                      SELECT DISTINCT product_id
                      FROM            product_attributes
                      WHERE           (
                                                      attribute_id='a'
                                      AND             attribute_value_id='x')
                      OR             (
                                                      attribute_id='b'
                                      AND             attribute_value_id='y') ;

显示代码,否则它不会发生。如果代码样本太大->这个问题在这里是离题的。当然,代码库太大了,但你并不真正需要它,因为更多的是关于算法而不是实现。对于有产品过滤的商店来说,这是一个典型的情况。事件如果没有人可以提供任何SQL查询,那么任何想法或起点都是好的。提供的表格足以了解正在发生的事情。 # product_id, attribute_id, attribute_value_id '812', '1', '12' '812', '2', '13' '812', '6', '139' '813', '1', '12' '813', '2', '13' '813', '6', '249' '814', '1', '12' '814', '2', '13' '814', '6', '268' '815', '1', '12' '815', '2', '13' '815', '6', '249' '816', '1', '12' '816', '2', '13' '816', '6', '249' '817', '1', '12' '817', '2', '13' '817', '6', '268' '818', '1', '12' '818', '2', '13' '818', '6', '249' '819', '1', '12' '819', '2', '277' '819', '6', '310' '820', '1', '12' '820', '2', '13' '820', '6', '93' '1361', '1', '12' '1361', '2', '36' '1362', '1', '12' '1465', '1', '12' '1465', '2', '13' '1465', '6', '249' '1466', '1', '12' '1466', '2', '13' '1466', '6', '268' '1582', '1', '12' '1582', '2', '277' '1582', '6', '139' '1583', '1', '12' '1583', '2', '277' '1583', '6', '516' '1784', '1', '12' '1784', '2', '13' '1784', '6', '139' '1794', '1', '12' '1794', '2', '13' '1794', '6', '93' '1802', '1', '12' '1802', '2', '66' '1802', '6', '93' $wheres = []; foreach ($this->appliedFilters as $attributeId => $attributeValuesIds) { foreach ($attributeValuesIds as $attributeValueId) { $wheres[] = "attribute_id = {$attributeId} and attribute_value_id = {$attributeValueId}"; } } $filteredSql = "SELECT * FROM product_attributes WHERE product_id IN (".implode(',', $this->filteredProductsIds).")"; $filtersSql = 'SELECT * FROM product_attributes WHERE product_id IN (SELECT DISTINCT product_id FROM product_attributes'; $firstWhere = array_shift($wheres); $filtersSql .= " WHERE ({$firstWhere})"; foreach ($wheres as $where) { $filtersSql .= " OR ({$where})"; } $filtersSql .= ')'; $mergedSql = " SELECT A.attribute_value_id, A.attribute_id FROM ({$filteredSql}) as A INNER JOIN ({$filtersSql}) AS B ON B.product_id = A.product_id"; echo "$filteredSql
$filtersSql
$mergedSql"; SELECT * FROM product_attributes WHERE product_id IN (812,813,814,815,816,817,818,819,820,1361,1362,1465,1466,1582,1583,1784,1794,1795,1802) SELECT * FROM product_attributes WHERE product_id IN (SELECT DISTINCT product_id FROM product_attributes WHERE (attribute_id = 1 and attribute_value_id = 12) OR (attribute_id = 2 and attribute_value_id = 277)) SELECT A.attribute_value_id, A.attribute_id FROM (SELECT * FROM product_attributes WHERE product_id IN (812,813,814,815,816,817,818,819,820,1361,1362,1465,1466,1582,1583,1784,1794,1795,1802)) as A INNER JOIN (SELECT * FROM product_attributes WHERE product_id IN (SELECT DISTINCT product_id FROM product_attributes WHERE (attribute_id = 1 and attribute_value_id = 12) OR (attribute_id = 2 and attribute_value_id = 277))) AS B ON B.product_id = A.product_id '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '12', '1' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '13', '2' '36', '2' '36', '2' '66', '2' '66', '2' '66', '2' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '93', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '139', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '249', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '268', '6' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '277', '2' '310', '6' '310', '6' '310', '6' '516', '6' '516', '6' '516', '6'
SELECT *
FROM   product_attributes
WHERE  product_id IN
                      (
                      SELECT DISTINCT product_id
                      FROM            product_attributes
                      WHERE           (
                                                      attribute_id='a'
                                      AND             attribute_value_id='x')
                      OR             (
                                                      attribute_id='b'
                                      AND             attribute_value_id='y') ;