我将简化我的实际表格以问这个问题
假设以下标准化表格
苏打
idSoda
sodaName
味道
idFlavor
FlavorText
苏打水口味
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