如下所示,与 Man , S 和 M 变体相关的产品(ID 100)。
功能表:
feature_id name
------------ ----------
1 Gender
2 Size
功能变体表:
variant_id feature_id name
------------ ------------- --------
1 1 Man
2 1 Woman
3 2 S
4 2 M
5 2 L
产品功能关系表:
product_id feature_id variant_id
------------ ------------- ------------
100 1 1
100 2 3
100 2 4
如何使用MySQL命令将这三种变体与产品联系起来?我真的没有这样做。
答案 0 :(得分:1)
首先,您不必要地重复一些信息。您的产品功能关系表中不需要feature_id。这可能来自您的功能变体表。如果要添加新产品属性,则必须复制此信息。此外,您可能会陷入不一致的状态。如果您的某些报表依赖于一个表中的功能ID而另一个报表使用另一个表,并且您忘记更新其中一个报表,则可能会生成一个仍显示错误信息的报表。
要回答你的问题,你只需加入各个表格。
select pf.product_id, f.name, fv.name
from productfeatures pf
inner join featurevariants fv on pf.variant_id = fv.variant_id
inner join features on fv.feature_id = f.feature_id
您的示例中没有产品表,但如果您这样做,您也可以加入该产品表并获取产品名称而不是ID。
希望这有帮助!
答案 1 :(得分:1)
你没有展示'产品'表,但我假设有一个。
SELECT * FROM product p INNER JOIN product_feature_relation rel ON p.product_id = rel.product_id INNER JOIN feature_variants fv ON rel.variant_id = fv.variant_id INNER JOIN features f ON fv.feature_id = f.feature_id
如果您要立即迭代并对其进行操作,则此查询提供的结果可能无用。最好有2行代表唯一尺寸,而不是3行(2种尺寸+性别) - 但你没有在问题中指明,所以我不确定你是否需要它。