我们说我的数据库中有这种结构:
Table Grandparent (Id, Name)
Table Parent (Id, GrandparentId, Name)
Table Child (Id, ParentId, Name)
这不是一个真正的结构,只是理论......(考虑到这个结构可以用1个Person表替换,其中包含parentId,是的,我知道)。当然,让我们假设没有性别......只有祖先和后代,就是这样。
好。所以。让我们说这些表按年龄分类。老人们去祖父母的桌子。中年人去父母餐桌,孩子们去儿童餐桌。
那么如何查询属于一个祖父母的所有孩子?
我试过了:
SELECT * FROM Child
JOIN Parent ON Child.ParentId = Parent.Id
JOIN Grandparent ON Parent.Id = Grandparent.GrandParentId
WHERE Grandparent.GreatGrandParentId = 1;
实际上它可以工作,但会返回很多列(不是行,列)。有点讨厌,但我可以忍受。我很高兴有任何改进。谢谢。
答案 0 :(得分:1)
您可能只需要Child
表中的列,而不是查询中所有表中的所有列。幸运的是,这很容易实现。只需使用Child.*
代替*
,即可:
SELECT Child.* FROM Child
JOIN Parent ON Child.ParentId = Parent.Id
JOIN Grandparent ON Parent.Id = Grandparent.GreatGrandParentId
WHERE Grandparent.GreatGrandParentId = 1;
答案 1 :(得分:1)
选择*将返回所有表中的所有列。
指定所需的列 - 例如SELECT child.Name FROM ....