我有一些困难来理解下面的关系。我有三个实体,品牌,细分市场和产品。一个品牌可以有多个细分市场,一个细分市场可以是多个品牌。一个产品可以有一个细分市场,一个细分市场可以有多个产品。我不明白如何将产品实体与细分市场相关联。目标是获得一个产品,并确定您的细分市场和品牌。
1品牌:N个细分市场
1细分市场:N个品牌
1个产品:1个细分市场
1细分市场:N个产品
发布于 2019-09-17 18:55:44
您正在处理品牌和细分市场之间的N:M关系。一个典型的解决方案是在表brands和segments之间创建一个桥接表。假设表brands具有主键brand_id,segments具有主键segment_id,您可以创建第三个名为brand_segments的表,其中包含列brand_id和segment_id来表示关系。
另一方面,细分和产品之间的关系是1:N。您可以通过在products表中添加一列来表示这种关系,该列存储对其所属细分的id的引用。
示例模式
brands
brand_id
brand_name
segments
segment_id
segment_name
products
product_id
product_name
segment_id
brand_segments
brand_id
segment_id恢复与产品关联的所有细分市场的查询:
SELECT p.*, s.*
FROM products p
INNER JOIN segments s ON s.segment_id = p.segment_id用于恢复与产品关联的所有品牌的查询:
SELECT p.*, b.*
FROM products p
INNER JOIN brand_segments bs ON bs.segment_id = p.segment_id
INNER JOIN brands b ON b.brand_id = bs.brand_id 这两个查询组合在一起
SELECT p.*, s.*, b.*
FROM products p
INNER JOIN segments s ON s.segment_id = p.segment_id
INNER JOIN brand_segments bs ON bs.segment_id = p.segment_id
INNER JOIN brands b ON b.brand_id = bs.brand_id 发布于 2019-09-17 18:52:55
下面的内容将是您如何连接它们并检索相关数据。
SELECT seg.Segment, prd.Product, brn.Brand
FROM Segment seg
LEFT JOIN Brand brn on brd.ID = seg.ID
LEFT JOIN Product prd on prd.ID = seg.IDID字段是您的主键和外键。
https://stackoverflow.com/questions/57972580
复制相似问题