次の方法で関連付けられているレコードを含むテーブルがあります。
親、子、孫。
クエリを実行して次のことを実行できるようにしたいと考えています。
- 特定のレコードの子孫であるすべてのレコードを取得する
- 特定のレコードの直接の子であるすべてのレコードを取得します (つまり、直接の子のみ)
- 特定のレコードの孫であるすべてのレコードを取得する (つまり、孫のみ)
- レコードの祖父母を取得する
- レコードの親を取得する
- すべてのレコード (およびその子と孫) を取得します
このクエリがソートされた方法でデータを返すようにしたいので、構造化ドキュメント (クエリ結果からの XML など) を作成できます。「ソート」とは、結果セットが親 THEN 子、THEN 孫によって「グループ化」されていることを意味します
このような単純なテーブルを設計しました (PSEUDO CODE):
CREATE TABLE family_tree {id integer
, parent_id integer
, child_id integer
, fname varchar(16)
, lname varchar(32) };
いくつか質問があります:
(私が実行したいクエリ [(1)-(6)] を念頭に置いて) これが最善 (つまり、使用できる最も効率的なテーブル構造ですか?) です。いいえの場合、何ですか?
上記の (1) ~ (6) のクエリを実行するための ANSI SQL ステートメントの作成を手伝ってくれる人はいますか?