![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: нет Всего: 3 |
У меня есть древовидная структура разделов.
Хочу составить запрос чтоб получить следующую информацию (порядок важен) root_section some_content section_level_1 some_content2 section_level_2 some_content3 Таблица сделана следующим образом id parent_id content Пишу в PostgreSQL. Может быть сделать рекурсивную функцию в pgsql чтоб она добавляла в конец массива свеженайденный id. Что то у меня никак не получается( |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Или в цикле или рекурсией. С Postgre незнаком, но на MS SQL Server решал задачу циклом
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Он конкретный код спрашивает, я так понимаю... в том-то и проблема.. постгресовцы чот-то молчат :-/ -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: нет Всего: 3 |
Я посмотрел, такие вещи только на pl/pgsql
или что то типа того можно сделать... Добавлено @ 20:27 Вопрос. Как мне установить поддержку этого самого pl/sql? Короче как мне сделать так чтоб им можно было работать? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Там действительно есть средства для работы с иерархическими структурами, но установить ты его не сможешь - это язык СУБД Oracle. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: нет Всего: 3 |
а разве нету pl/pgsql специально для postgre? вроде в документации описано было или я ошибаюсь?
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
PL/PGSQL - есть, но ты просто написал PL/SQL, а вот его дейтвительно нет.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: нет Всего: 132 |
В Oracle язык называется pl/sql, в PostgreSQL - pl/pgsql, это разные вещи, хотя синтаксис похож. Обычно интерпретатор pl/pgsql в PostgreSQL уже включен. Если нет, то можно вручную его включить:
Работа с рекурсивными наборами в PostgreSQL - задача нетривиальная, но решаемая. Вот пример того, как это можно сделать - http://people.planetpostgresql.org/merlin/...th-PLPGSQL.html. Вот еще статейка в самую точку - http://www.thescripts.com/forum/thread66221.html. Это сообщение отредактировал(а) tux - 29.3.2006, 10:17 |
|||
|
||||
Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
А зачем там рекурсия? Обычного цикла не достаточно? Или циклы не поддерживаются? Рекурсией конечно тоже можно, но нагрузка гораздо больше и выполняться будет дольше. На T-SQL (MS SQL Server) это решается примерно так:
Не верю чтоб в PL/PGSQL не было оператора While или Goto+if -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: нет Всего: 3 |
Спасибо большое за статьи.
Сегодня вечером обязательно прочитаю. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |