Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Запрос с with  [new]
Ikimura
Member

Откуда: Гродно, Беларусь
Сообщений: 19
Доброго всем вечера, нужна ваша помощь в написании запроса.
Исходные данные:
Unit(unit_id, name), Record(record_id, unit, parent_record allow null).
Нужно вывести юнитов, отсортированных по максимальной длине цепочки рекордов, т.е.
Unit:
unit_id - 1
name - Jim
Record:
record_id - 1
unit -1
Record:
record_id - 1
unit - 1
parent_record - 1
На выходе нужно получить
Jim -2
Как я понял это делается с помощью with, но дальше первой строчки дело не пошло, буду благодаерн за помощь, спасибо.
25 ноя 13, 20:55    [15187954]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с with  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Ikimura
..
Как я понял это делается с помощью with, но дальше первой строчки дело не пошло, буду благодаерн за помощь, спасибо.

with, with, и даже где-то start with
26 ноя 13, 00:06    [15188590]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с with  [new]
Ikimura
Member

Откуда: Гродно, Беларусь
Сообщений: 19
orawish,
Дельный совет.
27 ноя 13, 11:35    [15197101]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с with  [new]
Ikimura
Member

Откуда: Гродно, Беларусь
Сообщений: 19
Все еще нужна ваша помощь... Есть такой вариант, но я почти уверен, что он абсолютно неправилен и к тому же не работает(
with t AS (SELECT patient_id, record_id, parent_record
				FROM patients, records)
select patient_id, COUNT(*)
FROM (SELECT patient_id, connect_by_root(record_id) record_id, connect_by_isleaf isleaf
		from t
		connect by record_id = prior parent_record and parent_record = record_id)
		where isleaf = 1;
27 ноя 13, 23:09    [15202466]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить