У меня есть таблица, которая ссылается на себя, например:
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