我的数据库中有 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)
关于mysql - MYSQL中无法写入 'find the products with at least such features',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21627370/