我一直在尝试解决一个事实证明比看起来更困难的问题。
考虑有一个将产品与属性相关联的表,它看起来像这样:
Products_id | Attribute_id 21 | 456 21 | 231 21 | 26 22 | 456 22 | 26 22 | 116 23 | 116 23 | 231
接下来,我有一个 attribute_ids 列表,我想使用它来获取具有该列表中所有属性的产品。
例如,如果我使用此列表 (456, 26) 在上表中搜索,我应该得到这些 product_ids 21 和 22。 另一个例子,如果我搜索 (116, 231) 我应该得到 23,因为产品 23 是唯一具有这两个属性的产品。
如何使用一个查询实现这一目标?
我希望我把我的问题说清楚了。
谢谢。
最佳答案
如果您手工制作查询:
SELECT Products_ID
FROM ProductAttributes
WHERE Attribute_ID IN (116, 231)
GROUP BY Products_ID
HAVING COUNT(*) = 2;
这会询问具有给定属性的条目数等于属性数的所有产品。如果您想要概括,您可以针对感兴趣的产品属性 ID 值的表进行连接。
关于mysql - 查找具有属性列表的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2569294/