mysql - 查找具有属性列表的产品

标签 mysql

我一直在尝试解决一个事实证明比看起来更困难的问题。

考虑有一个将产品与属性相关联的表,它看起来像这样:

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/

相关文章:

mysql - 如何在mysql中的CONCAT ("string",列)上创建索引?

php - 无法登录管理面板检查是否是管理员或作家

php - 如何使用 PHP 显示来自 MySql 查询的多个结果

mysql - 类型不匹配,打开记录集

mysql - 在 MySQL 中获取不存在于另一个表的两列中的行

php - mysql字段数据更改时出现"mysql_fetch_assoc()"错误

mysql - 如果双方的信息相同,我应该从连接的哪一边选择?

php - 在 PHP 中创建 DB 并将其保存在 localhost 中

php - 根据另一个单元格的值在查询中连接 mysql 表

Mysql:如何用同一表中另一行的值填充一行中的空值?