【发布时间】:2010-01-21 20:28:31
【问题描述】:
我们有 3 张桌子:祖父、父亲、儿子。 祖父有很多父亲,父亲有很多儿子,通过外键祖父 ID 和父亲 ID。 每条记录只有一个属性,即人名。
我想要的是有一个所有祖父的列表,每个祖父都有一个名为 grandsons_names 的字段,它是所有孙子名字的 csv。父亲的名字不会出现在任何地方。
这是我解决问题的尝试:
SELECT grandfathers.*, group_concat(sons.name)
FROM grandfathers
LEFT JOIN fathers ON grandfathers.id == fathers.grandfather_id
LEFT JOIN sons ON fathers.id == sons.father_id;
问题是......只有一位祖父出现,因为聚合发生在错误的地方......如何解决这个问题?
谢谢
【问题讨论】:
-
您在该代码示例中没有遗漏 GROUP BY 子句吗?
-
为什么你(某人)否决了这个问题?我认为它表达得很好,而且中肯。如果您认为这太简单了,那是您的问题,我不知道答案,这对我很有帮助。