Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL дерево и связанная таблица  [new]
Лисъ
Guest
Есть две таблицы. В первой лежит иерархия файлов:

CREATE TABLE FILE (
ID INTEGER PRIMARY KEY,
PARENT_ID INTEGER,
NAME TEXT NOT NULL,
FOREIGN KEY(PARENT_ID) REFERENCES FILE(ID));


В второй таблице лежит список событий по каждому файлу:

CREATE TABLE EVENT (
ID INTEGER PRIMARY KEY,
FILE_ID INTEGER NOT NULL,
...
FOREIGN KEY(FILE_ID) REFERENCES FILE(ID));


Нужно удалить из FILE файлы по которым нету никаких событий в EVENT, учитывая что события могут быть в детях. То есть просто сделать
DELETE FROM FILE WHERE NOT EXISTS (SELECT ID FROM EVENT WHERE EVENT.FILE_ID = FILE.ID)


не получится т.к. нельзя удалять записи ссылающиеся на подчиненные записи, которые в свою очереь имеют связанные события в EVENT.

Я так понимаю тут надо как-то заюзать Common Table Expressions. Есть идеи как такое сделать?
28 мар 16, 12:18    [18985775]     Ответить | Цитировать Сообщить модератору
 Re: SQL дерево и связанная таблица  [new]
Glory
Member

Откуда:
Сообщений: 104751
Лисъ
Я так понимаю тут надо как-то заюзать Common Table Expressions. Есть идеи как такое сделать?

Взять и "заюзать". Стандартный иерархический запрос, описанный во всех примерах в хелпе.
28 мар 16, 12:19    [18985782]     Ответить | Цитировать Сообщить модератору
 Re: SQL дерево и связанная таблица  [new]
_djХомяГ
Guest
Рекурсивные CTE
28 мар 16, 12:21    [18985787]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить