Mysql将同一个表连接成多列(非规范化?)

时间:2018-05-09 17:31:44

标签: mysql

我要简化我的真实表来提出这个问题 假设以下规范化表格

苏打水

idSoda
sodaName

风味

idFlavor
FlavorText

SodaFlavorAsc

SodaID
FlavorID

假设苏打水可以有多种味道(最多三种),我该如何创建一个将数据非规范化为一个平面表的查询?

idSoda, sodaName, FlavorText(first occurance), FlavorText(second occurance), FlavorText(third occurance)

1 个答案:

答案 0 :(得分:2)

对于同一列中的多种口味,请使用分组和GROUP_CONCAT

SELECT s.idSoda, GROUP_CONCAT(f.FlavorText SEPARATOR ',') as flavors
FROM Soda s
LEFT JOIN SodaFlavorAsc sfa ON sfa.SodaId = s.idSoda
LEFT JOIN Flavor f ON f.idFlavor = sfa.FlavorID
GROUP BY s.idSoda