我觉得这一定是一个经典问题,但我找不到答案。
我有一张 Person 表,里面有描述一个人的基本细节。然后,我有一个 ParentChildRelationship 表,它看起来像这样:
CREATE TABLE `ParentChildRelationship` (
`ParentId` INT(10) UNSIGNED NOT NULL,
`ChildId` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY(ParentId,ChildId),
CONSTRAINT `FK_ParentRelationship`
FOREIGN KEY (`ParentId` )
REFERENCES `Person` (`idPerson` ),
CONSTRAINT `FK_ChildRelationship`
FOREIGN KEY (`ChildId` )
REFERENCES `Person` (`idPerson` )
);
我需要一个选择查询,它只返回树下的父级和所有子级的所有人员记录。
例如,使用以下数据:
Parent Child
1 3
1 8
2 4
3 5
3 6
6 9
4 7
选择 ParentId = 1 OR ChildId 位于ParentId 为 1下方Person
的树中的所有 Person 记录。此查询应返回以下 PersonId 的Person 信息 (SELECT * FROM ...):
1,3,8,5,6,9
我不知道这是否重要,但是这些返回的顺序并不重要,因为我需要根据“LastName”之类的东西来订购。换句话说,结果也可能是 1,3,5,6,9,8。