首页 文章

按特定属性搜索产品

提问于
浏览
0

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

在这里我的设置:

表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

    也许这会有所帮助?

    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);

相关问题