Думал, что знаю SQL
9/2/10 18:24![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Позор джунглям!
Пилю Выбираю я дерево, знаю только синтаксис Оракла... и узнаю, что в SQL появились такие себе "подпрограммы"!
И от как оно выглядит (источник).
Пора на свалку.
Пункт второй.
В Hibernate давно уже думают - а не закодировать ли ORM для дерева, чтобы рекурсивное дерево можно было выбрать одним запросом.
И, конечно, всё никак не прикрутят.
Кто тоже забыл структуры данных — напоминаю: это делается минимум двумя способами, nested set/interval, и materialized path. В первом случае в записи хранятся ещё и индексы поддерева в отображении на отсортированный массив, а во втором - тупо путь к элементу.
Ещё можно, к примеру, проставить в записях их порядковые номера при обходе дерева. Автор статьи, правда, этого тоже не пробовал.
И от как оно выглядит (источник).
WITH n (level, id, name) AS
(SELECT 1, id, name
FROM emp
WHERE name = 'Goyal'
UNION ALL
SELECT n.level+1, nplus1.id, nplus1.name
FROM emp as nplus1, n
WHERE n.id = nplus1.manager_id)
SELECT name, level FROM n;
Пора на свалку.
Пункт второй.
В Hibernate давно уже думают - а не закодировать ли ORM для дерева, чтобы рекурсивное дерево можно было выбрать одним запросом.
И, конечно, всё никак не прикрутят.
Кто тоже забыл структуры данных — напоминаю: это делается минимум двумя способами, nested set/interval, и materialized path. В первом случае в записи хранятся ещё и индексы поддерева в отображении на отсортированный массив, а во втором - тупо путь к элементу.
Ещё можно, к примеру, проставить в записях их порядковые номера при обходе дерева. Автор статьи, правда, этого тоже не пробовал.
Tags: