mysql - MYSQL中无法写入 'find the products with at least such features'

标签 mysql sql database database-administration

我的数据库中有 3 个表。具有product_id的产品、具有功能性_id和product_funcionality的功能(product_funcionality_id、product_id、featured_id)

我需要一个查询来查找产品,您可以在其中选择包含“最低”此类功能的所有产品。

如果产品 P1 具有 F1、F5、F10 功能

查询应查找包含完全相同功能(F1、F5、F10)的产品,但应显示具有一些附加功能的产品。

您可以通过以下方式展示产品:

P1 -> F1, F2, F3, F5, F10,
P2 -> F1, F5, F6, F10,
P3 -> F1, F3, F5, F10, F11,

无法显示:

P4 -> F1, F2, F10,
P5 -> F1, F5, F11

我正在努力编写一个查询来确保业务规则,不能写“查找至少具有此类功能的产品”。

IN 子句不直接寻址。

我确实喜欢编写 SQL 以获得至少具有此类功能的产品? 欣赏

编辑:

我必须添加功能类型表,并且查询是根据功能类型进行的,只是您必须遵循上述相同的结构,该表功能类型将用于引用具有特定功能的所有产品功能类型。更改having子句以获取至少所有包含具有type_funtionality_id功能的产品?

每种类型的功能只是一个带有名称的键。功能性也与品牌相关。

最佳答案

如果您想根据功能列表作为最小功能进行搜索,您可以执行以下操作:

    SELECT product_id,
           COUNT(*) AS features
      FROM product_funcionality pf
INNER JOIN funcionality f ON f.functionality_id = pf.functionality_id
     WHERE functionality_type_id = 1
  GROUP BY product_id
    HAVING features = 
   (SELECT COUNT(*)
      FROM funcionality
     WHERE functionality_type_id = 1)

演示地址:http://sqlfiddle.com/#!2/e9d20/5

关于mysql - MYSQL中无法写入 'find the products with at least such features',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21627370/

相关文章:

mysql - 从 {invalid_table} 中选择 invalid_field

mysql - 如何修复 mysql 中的错误 29 (HY000)?

sql - Hive 3.1 "timestamp with local time zone"问题

ruby-on-rails - ruby : How to parse a jsonp and save json data to database

java - java中同步方法的问题

php - 为什么php没有返回结果,而mysql有?

php - 如何在 Silverstripe 中搜索表数据?

php - 使用 for 每个循环插入数据并忽略没有数据的文本字段

sql - Mysql查询问题

database - 计算给定函数依赖性的候选键