CREATE TABLE Tree
(ID INTEGER NOT NULL PRIMARY KEY,
ID_FATHER INTEGER FOREIGN KEY REFERENCES Tree (ID),
NAME VARCHAR(16));
Заполним её данными
INSERT INTO Tree
VALUES (1, NULL, 'ALL'), (2, 1, 'SEA'), (3, 1, 'EARTH'),
(4, 1, 'AIR'), (5, 2, 'SUBMARINE'),
(6, 2, 'BOAT'), (7, 3, 'CAR'),
(8, 3, 'TWO WHEELES'), (9, 3, 'TRUCK'),
(10, 4, 'ROCKET'), (11, 4, 'PLANE'),
(12, 8, 'MOTORCYCLE'), (13, 8, 'BYCYCLE');
Обычно иерархия схематизируется авто-ссылкой, которая имеет место и здесь: внешний ключ ссылается на первичный ключ той же таблицы. Имеющиеся данные можно трактовать следующим образом:
ALL
|--SEA
| |--SUBMARINE
| |--BOAT
|--EARTH
| |--CAR
| |--TWO WHEELES
| | |--MOTORCYCLE
| | |--BYCYCLE
| |--TRUCK
|--AIR
|--ROCKET
|--PLANE
Построим запрос. Необходимо узнать, откуда пришел МОТОЦИКЛ (MOTORCYCLE). Другими словами, требуется найти всех предков "МОТОЦИКЛА". Начать следует со строки данных, которая содержат motorcycle:
Результат
|
|
NAME
|
ID_FATHER
|
MOTORCYCLE
|
8
| SELECT NAME, ID_FATHER
FROM Tree
WHERE NAME = 'MOTORCYCLE';
Мы должны иметь родительский ID, чтобы перейти к следующему шагу. Второй запрос, который делает этот следующий шаг, должен быть написан подобно следующему:
Do'stlaringiz bilan baham: |