MySQL查询购物车过滤器

时间:2016-01-06 15:14:21

标签: mysql sql

我使用下表购物车

id  product_id  attribute_id    value
----------------------------------------
1       1           1           A,B,C
2       2           1           B,C
3       3           1           C
4       1           2           200
5       2           2           150
6       3           2           300
7       1           3           RED
8       2           3           BLUE
9       3           3           RED,GREEN
10      1           4           YES
11      2           4           NO
12      3           4           NO

我可以从此表格中形成搜索结果。可以按属性过滤搜索结果。

属性可以包含以下类型的值:

  1. 数字(250)
  2. 字符串(是/否)
  3. 字符串列表(A,B,C)
  4. 我需要一个查询来获取以下条件的product_id列表

    • attribute_id = 1且值= B或C
    • attribute_id = 2且值= 150
    • attribute_id = 4和value = NO

    我提到了一个股票问题(MySQL Multiple Where Clause)并尝试但无法获得实际产量。

2 个答案:

答案 0 :(得分:0)

OR子句中使用WHERE,并使用括号分割每个条件。

SELECT id, product_id, attribute_id, value
FROM shoppingcart
WHERE (attribute_id = 1 AND value IN ('B', 'C'))
OR (attribute_id = 2 AND value = 150)
OR (attribute_id = 4 AND value = 'NO')

答案 1 :(得分:0)

试试这个:

SELECT product_id FROM table_name WHERE 

(attribute_id = 1 AND (
            (value LIKE 'B,%' OR value LIKE '%,B' OR value LIKE '%,B,%' OR value LIKE 'B')
            OR
            (value LIKE 'C,%' OR value LIKE '%,C' OR value LIKE '%,C,%' OR value LIKE 'C')
              )
) 

OR

(attribute_id = 2 AND value = '150')
OR

(attribute_id = 3 AND value = 'NO')