首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个表关联到另一个已经有关系(N:N)的表?

如何将一个表关联到另一个已经有关系(N:N)的表?
EN

Stack Overflow用户
提问于 2019-09-17 18:43:58
回答 2查看 49关注 0票数 0

我有一些困难来理解下面的关系。我有三个实体,品牌,细分市场和产品。一个品牌可以有多个细分市场,一个细分市场可以是多个品牌。一个产品可以有一个细分市场,一个细分市场可以有多个产品。我不明白如何将产品实体与细分市场相关联。目标是获得一个产品,并确定您的细分市场和品牌。

1品牌:N个细分市场

1细分市场:N个品牌

1个产品:1个细分市场

1细分市场:N个产品

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-17 18:55:44

您正在处理品牌和细分市场之间的N:M关系。一个典型的解决方案是在表brandssegments之间创建一个桥接表。假设表brands具有主键brand_idsegments具有主键segment_id,您可以创建第三个名为brand_segments的表,其中包含列brand_idsegment_id来表示关系。

另一方面,细分和产品之间的关系是1:N。您可以通过在products表中添加一列来表示这种关系,该列存储对其所属细分的id的引用。

示例模式

代码语言:javascript
复制
brands
    brand_id
    brand_name

segments
    segment_id
    segment_name

products
    product_id
    product_name
    segment_id

brand_segments
    brand_id
    segment_id

恢复与产品关联的所有细分市场的查询:

代码语言:javascript
复制
SELECT p.*, s.*
FROM products p
INNER JOIN segments s ON s.segment_id = p.segment_id

用于恢复与产品关联的所有品牌的查询:

代码语言:javascript
复制
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 

这两个查询组合在一起

代码语言:javascript
复制
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 
票数 0
EN

Stack Overflow用户

发布于 2019-09-17 18:52:55

下面的内容将是您如何连接它们并检索相关数据。

代码语言:javascript
复制
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.ID

ID字段是您的主键和外键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57972580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档