簡體   English   中英

按特定屬性搜索產品

[英]Searching products by specific attributes

我有一個小商店系統,現在我想選擇一些具有特定屬性和條件的產品。

這是我的設置:

XYZ表:

  • product_id
  • attribute_id
  • attribute_group_id

所以現在我要選擇所有具有屬性ID 1、3、5和7而不是9和2的產品。

我如何以一種簡單的方式執行此操作,我的第一個想法是按產品ID對其進行分組,並對attribute_ids進行分組,並使用“具有”來包含和排除我想要的屬性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_%')

這可行,但是有更好的解決方案,對吧?

也許這會有所幫助?

從table_XYZ的WHERE attribute_id IN(1,3,5,7)中選擇product_id

或者,如果您有更多ID,並且僅排除少數幾個:

從table_XYZ的SELECT product_id中選擇attribute_id NOT IN(2,9);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM