|
Рекурсивный запрос
|
|||
---|---|---|---|
#18+
Здравствуйте. имеются две таблицы. data(id integer, name varchar(255)) и data_links(upid integer, downid integer) Вложенность может быть как на 1 уровень, так и на несколько. Пробую сделать рекурсивный запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Запрос работает, выводит все нормально. Но мне требуется вернуть не все, а только данные самого верхнего уровня, и данные самого нижнего уровня Получить в строку data.id, data.name верхнего ууровня и data.id, data.name самого нижнего уровня Данные верхнего уровня могут повторяться, так как одному значению верхнего уровня может соответствовать несколько значений самого нижнего уровня. Как мне получить такие данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 14:41 |
|
Рекурсивный запрос
|
|||
---|---|---|---|
#18+
Павел Гужанов, Оконные first_value(value any) same type as value returns value evaluated at the row that is the first row of the window frame last_value(value any) same type as value returns value evaluated at the row that is the last row of the window frame по результату рекурсии? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 15:11 |
|
Рекурсивный запрос
|
|||
---|---|---|---|
#18+
Попробовал такое: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
вернулась одна строка, повторенная много раз. У меня же верхнего уровня несколько записей. И каждой соответствуют несколько записей нижнего уровня ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 15:33 |
|
Рекурсивный запрос
|
|||
---|---|---|---|
#18+
окошко правильно задавать надо (скобочки во фразе over). Это не магическая кнопочка. Думать и понимать должен ты, юный падаван. Чтобы понять, что именно писать, нужно понять, что именно написано в рекурсии. Из описания и из рекурсивного SQL не следует ровным счетом ничего. также first_value(*) попахивает карго-культом. Вот тут вот примеры: https://stackoverflow.com/questions/15721207/postgresql-how-should-i-use-first-value и мозгами, либо подробную логику рекурсии в студию. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 16:18 |
|
Рекурсивный запрос
|
|||
---|---|---|---|
#18+
Подробная логика: Таблица ссылается сама на себя через связывающую таблицу, по полю ID Нужно получить ид и имя самого верхнего уровня, и ид и имя самого нижнего из вложенных уровней, промежуточные уровни не нужны ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 16:40 |
|
Рекурсивный запрос
|
|||
---|---|---|---|
#18+
Если не нужно соответствие Первый -> * -> Последний то достаточно такого запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
если нужны только по цепочкам то скомбинируйте с Вашим рекурсивным запросом ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 16:51 |
|
|
start [/forum/topic.php?fid=53&tid=1995371]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 164ms |
0 / 0 |