これは古典的な問題に違いないと思いますが、答えが見つかりません。
私はテーブル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` )
);
ツリーの下の親とすべての子のすべてのPersonレコードを返すだけのselectクエリが必要です。
たとえば、次のデータを使用します。
Parent Child
1 3
1 8
2 4
3 5
3 6
6 9
4 7
ParentId = 1またはChildIdが1のParentIdの下Person
のツリーにあるすべてのPersonレコードを選択します。このクエリは、次のPersonIdのPerson情報(SELECT * FROM ...)を返す必要があります。
1,3,8,5,6,9
これが重要かどうかはわかりませんが、「LastName」などに基づいて注文する必要があるため、これらが返される順序は重要ではありません。つまり、結果は1,3,5,6,9,8である可能性もあります。