加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何连接结点表中的笛卡尔积加入MySQL

发布时间:2020-12-11 23:51:45 所属栏目:MySql教程 来源:网络整理
导读:我有三个表:项目,交汇点和属性.我有五个项目(A到E)和五个属性(1到5).通过Junction Table,我已经分配了如下属性: A: 1,3,5B: 1,2,3C: 1,4,5D: 1,3E: 1,5 当我运行以下查询时,我得到了一个可爱的十五记录笛卡尔积(正如人们所期望的那样). SELECT I.id,I.item

我有三个表:项目,交汇点和属性.我有五个项目(A到E)和五个属性(1到5).通过Junction Table,我已经分配了如下属性:

A: 1,3,5
B: 1,2,3
C: 1,4,5
D: 1,3
E: 1,5

当我运行以下查询时,我得到了一个可爱的十五记录笛卡尔积(正如人们所期望的那样).

SELECT I.id,I.item_name,P.property_name FROM scratch.items I
JOIN scratch.junction J ON J.item_id = I.id
JOIN scratch.property P ON J.property_id = P.id;

我想要做的是将每个项目的属性名称连接到一个字段中,这样我就可以像这样吐出它们:

Record  |  item_id  |  item_name  |  properties
----------------------------------------------------------------------------
     0  |  A        |  Item A     |  Property 1,Property 3,Property 5
     1  |  B        |  Item B     |  Property 1,Property 2,Property 3
     2  |  C        |  Item C     |  Property 1,Property 4,Property 5
     3  |  D        |  Item D     |  Property 1,Property 3
     4  |  E        |  Item E     |  Property 1,Property 5
----------------------------------------------------------------------------

与我此处的设计示例不同,每个项目可以包含任意数量的属性(包括零). 最佳答案 您可以像这样使用group_concat函数:

SELECT I.id,group_concat(P.property_name) as properties
FROM scratch.items I
JOIN scratch.junction J ON J.item_id = I.id
JOIN scratch.property P ON J.property_id = P.id
group by I.id;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读