1

我有三张桌子:

    Apples

ID|Name
1 |Granny
2 |Red
3 |Delicious

Pies
ID|Name|Apple_ID|Maker_ID
1 |Pie |1       |1
2 |Pie2|1       |2
3 |Pie3|1       |3
4 |Pie4|2       |1


Makers
ID|Name
1 |Jeff
2 |Jerry
3 |Jeremy

如您所见,一个苹果可以分为三个不同的馅饼,但连接到不同的制造商。我想要一个准备以 CSV 格式导出的查询,该查询执行以下操作:

我想每行有一个苹果,列中有苹果 ID、名称和制造商名称,但不是两个表之间的“临时”链接,馅饼。像这样:

Granny, Jeff, Jerry, Jeremy
Red, Jeff

等等......我知道我可以对所有馅饼进行一次查询,然后对所有制造商进行一次查询,但我想知道是否有办法将最后一个表中的值连接起来,就好像它们在同一个“行”中一样。我也知道我可以有许多具有相同值的行,但它为那些只想看看苹果并立即知道谁用它做馅饼而不扫描多行的人做准备。

谢谢你的帮助!

4

1 回答 1

4
SELECT CONCAT( Apples.name, ', ', GROUP_CONCAT(Makers.name SEPARATOR ', ') )
FROM Apples
JOIN Pies ON (Pies.Apple_ID = Apples.ID)
JOIN Makers ON (Makers.ID = Pies.Maker_ID)
GROUP BY Apples.name

检查GROUP_CONCAT()手册页。摆弄其参数以根据需要格式化其输出。

于 2013-08-01T20:50:14.717 回答