的比方说,我有这样的结构,在我的数据库:我的查询返回大量列
Table Grandparent (Id, Name)
Table Parent (Id, GrandparentId, Name)
Table Child (Id, ParentId, Name)
这是不是一个真正的结构,只是理论......(考虑到一个事实,这种结构可取而代之的是1人桌,其中有parentId,是的,我知道)。当然,我们假设没有性别......只有祖先和后代,就是这样。
好的。所以。假设这些表格按年龄分类。老人们去了祖父母的餐桌。中年人去父母的桌子,孩子们去儿童桌子。
那么我如何查询属于一个祖父母的所有孩子呢?
我尝试这样做:
SELECT * FROM Child
JOIN Parent ON Child.ParentId = Parent.Id
JOIN Grandparent ON Parent.Id = Grandparent.GrandParentId
WHERE Grandparent.GreatGrandParentId = 1;
其实它的工作原理,但返回大量列(不是行,列)。小恼人,但我可以忍受。我会很高兴任何改进。谢谢。
哇。凉。谢谢。 –
我不应该使用完整的外连接或任何其他连接类型? –
不,您正在使用的内部连接很好,因为您只需要匹配行。也就是说,你不关心'Child'中没有匹配的'Parent'或'Parent'而没有匹配的'祖父母'的东西。 –