我将简化我的实际表格以问这个问题
假设以下标准化表格

    苏打

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

10-06 09:10