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



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

苏打

idSoda
sodaName

味道

idFlavor
FlavorText

苏打水风味Asc

SodaID
FlavorID

假设苏打水可以有多种口味(最多三种(,如何创建一个查询,将数据非规范化回一个平面表中?

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

对于同一列中的几种口味,请使用分组和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

最新更新