Хранение дерева в таблице

Модераторы: kdv, CyberMax

Ответить
Nikoole
Сообщения: 10
Зарегистрирован: 11 ноя 2011, 22:34

Хранение дерева в таблице

Сообщение Nikoole » 13 дек 2011, 16:44

Привет всем. Не знаю можно ли искать тут помощи по такому вопросу, но попытка не пытка.
Итак: У меня есть следующай таблица:
CREATE TABLE COURSES (
LEVELCODE INTEGER NOT NULL,
"LEVEL" INTEGER,
PARENTLEVELCODE INTEGER,
LEVELNAME VARCHAR(2000),
LEVELDESC VARCHAR(4000),
LEVELCONTENT VARCHAR(4000),
LEVELNUM INTEGER,
LEVELFILE VARCHAR(1000),
LEVELANCHORS VARCHAR(2000)
);

Вот с такими ключами:
ALTER TABLE COURSES ADD CONSTRAINT PK_COURSES_1 PRIMARY KEY (LEVELCODE);

ALTER TABLE COURSES ADD CONSTRAINT FK_COURSES_1 FOREIGN KEY (PARENTLEVELCODE) REFERENCES COURSES (LEVELCODE) ON DELETE CASCADE ON UPDATE CASCADE;

Т.е. PARENTLEVELCODE - внешний, и ведет на поле LEVELCODE в этой же таблице.
Чтобы это заработало, мне пришлось добавить одну строку в таблицу, где LEVELCODE = PARENTLEVELCODE = 0

На хабре есть вот такая картинка:
Изображение

Вот как бы мне вытащить название всех серверов из России (а если ставить параллель с моей таблицей - то как мне вытащить все LEVELFILE, которые находятся "ниже" по иерархии)?

Ответить