25Июл/122
[SQL] Задачка соискателю
Тема: SQL дерево.
Задача: дана одна сущность с замыканием ключа сам на себя - найти все листья
Таблица:
1 | CREATE TABLE t1 (id integer NOT NULL PRIMARY KEY UNIQUE , id_p integer ) |
Решение:
1 | SELECT * FROM t1 AS e1 WHERE NOT EXISTS ( SELECT * FROM t1 AS e2 WHERE e1.id = e2.id_p) |
Т.е. ищем все элементы которые не являются родителем кому-либо
Комментарии (2)
Пинги (0)
(подписаться на новые комментарии в этой ветке)
Нет обратных ссылок на эту запись.
Август 31st, 2012 - 09:18
Хм
Август 31st, 2012 - 09:21
Вообще есть такое понятие как «иерархические запросы», в MSSQL они появились вроде с 2005, в Oracle с 8й версии.
В Oracle есть отдельный специальный псевдостолбец для такого — CONNECT_BY_ISLEAF.
К примеру
SELECT T.*, CONNECT_BY_ISLEAF
FROM EMPLOYERS
CONNECT BY EMP_ID = PRIOR EMP_PARENTID