按特定属性搜索产品

时间:2016-11-01 13:35:18

标签: mysql relationship

我有一个小商店系统,现在我想选择一些具有特定属性和条件的产品。

这是我的设置:

表XYZ:

  • PRODUCT_ID
  • attribute_id
  • attribute_group_id

所以现在我想选择所有具有属性-id 1,3,5和7但不是9和2的产品。

我怎么能以一种简单的方式做到这一点,我的第一个想法是按产品ID和group_concat对attribute_ids进行分组,并使用“having”来包含和排除我想要的属性ID。

SELECT CONCAT('_',GROUP_CONCAT(attribute_id SEPARATOR '_'),'_') as attrs, 
       product_id
FROM my_table
GROUP BY product_id 
HAVING (attrs LIKE '%_1_%' 
        AND attrs LIKE '%_3_%' 
        AND attrs LIKE '%_5_%' 
        AND attrs LIKE '%_7_%')
AND (attrs NOT LIKE '%_2_%' 
    AND attrs NOT LIKE '%_9_%')

这有效,但有更好的解决方案,对吗?

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助?

SELECT product_id FROM table_XYZ WHERE attribute_id IN(1,3,5,7);

或者,如果您有更多的ID以及仅排除少数的内容:

SELECT product_id FROM table_XYZ WHERE attribute_id NOT IN(2,9);