我正在研究需要多值M:N关系的项目。
例如。
Products
表中有一个产品列表。
用户可以购买1个或多个产品,并保留在表Orders
中。除了这些信息外,还有一个表可以维护分析信息。
此表应包含类似的硬编码数据。如果订单包含产品1和产品2,则产品3和产品4也按用户的顺序出现。这些基本上是硬编码规则
actual products | expected products
1,3 | 2,4
5,6,7,8 | 3,4
现在从这些表格中,我需要查找信息,例如用户的订单号1是否包含1和3等产品,然后返回2和4。
我需要有关如何描述这种多值M到N关系的建议。如果除了RDBMS之外还有其他任何选项可以随意建议。感谢
答案 0 :(得分:0)
您可以创建另外三个表:
在发出订单后,我们可以检测出应该添加哪些附加产品。
编辑:添加样本
返回满足要求的集合列表的示例查询:
SELECT psp.productset_id FROM
ProductSetPart psp LEFT JOIN
OrderLines ol
ON
psp.product_id=ol.product_id
GROUP BY
psp.productset_id
HAVING
-- trick - COUNT(*) will return count of all products required by aggregatet set
-- COUNT(psp.product_id) will count only not null products
-- (which will be null if they aren't in order line)
-- so if all product sets are in order line then we know,
-- that this set requirements are full filled
COUNT(*) = COUNT(psp.product_id)