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

时间:2016-08-09 03:07:39

标签: mysql sql

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

A: 1, 3, 5
B: 1, 2, 3
C: 1, 4, 5
D: 1, 2, 3
E: 1, 4, 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 2, Property 3
     4  |  E        |  Item E     |  Property 1, Property 4, Property 5
----------------------------------------------------------------------------

与此处的设计示例不同,每个项目可以包含任意数量的属性(包括零)。

1 个答案:

答案 0 :(得分:3)

您可以像这样使用group_concat函数:

save()