次のように、自分自身を参照するテーブルがあります。
CREATE TABLE Foo (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
parent INT NULL,
name VARCHAR (30) NOT NULL,
FOREIGN KEY (parent) REFERENCES Foo(id) ON DELETE CASCADE);
サンプルデータ:
id parent name
1 NULL a
2 NULL b
3 1 a1
4 1 a2
5 3 a1x
6 3 a2x
特定の行の先祖と子孫をリストするクエリを書きたいです。
CALL find_ancestors('a1x')
戻ります
id name
3 a1
1 a
と
CALL find_descendants('a')
戻ります
id name
3 a1
5 a1x
これらのストアド プロシージャを MySQL 5 用に記述するにはどうすればよいですか? ありがとう
報奨金のボーナス質問:また、返された行のソースからの距離を選択し、最大距離パラメーターをプロシージャーに渡します。
CALL find_ancestors('a1x')
戻ります
id name distance
3 a1 1
1 a 2
と
CALL find_ancestors_bounded('a1x',1)
戻ります
id name distance
3 a1 1