Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
Имеется иерархическая структура, а именно давно избитая NestedSet (id, parent_id, lft, rgt). У меня задача создать View в котором помимо всех полей таблицы для каждого узла будет показан и ID корневого узла. Подскажите пожалуйста алгоритм нахождения корневого элемента. За пример кода я буду благодарен безумно, я довольно салабо еще разбираюсь в postgres а времени маловато (. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 13:22 |
|
||
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
что есть "корневой узел"? запись когда parent_id = null (или 0)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 16:06 |
|
||
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
sj_sqlчто есть "корневой узел"? запись когда parent_id = null (или 0)? Да. И таких узлов может быть несколько. Мне нужно получить вот такой результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 16:17 |
|
||
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
connectby выполни \share\contrib\tablefunc.sql читай \doc\contrib\README.tablefunc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 16:22 |
|
||
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
Юзаем рекурсию или цикл с условием. В примере кусок кода где находится поле objectEnvelope корн. елемента: ............... parentGuid = p_guid; WHILE parentGuid <> 0 LOOP --пока не дойдем до корневого обьекта(у корн. обьектов parent_guid=0) SELECT O.parent_guid, O.envelope FROM object O WHERE O.guid = parentGuid INTO parentGuid, objectEnvelope; END LOOP; RETURN objectEnvelope; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 17:04 |
|
||
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
sj_sqlconnectby выполни \share\contrib\tablefunc.sql читай \doc\contrib\README.tablefunc Поставил, почитал, но боюсь что не подойдет ибо сторонняя либа на C да и результат в не том формате: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. подобное содержимое branch удручает. О том, как сделать по другому в мане нет ни строчки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 17:23 |
|
||
|
NestedSet - узнать ID корневого узла для произвольного дочернего
|
|||
|---|---|---|---|
|
#18+
У меня так отработало: SELECT id, parent_id, lft, rgt, (SELECT keyid FROM connectby('NestedSet', 'parent_id', 'id',id, 0) AS t(keyid text, parent_keyid text, level int) ORDER BY t.level DESC LIMIT 1) as root_id FROM NestedSet order by id; но при этом для корневых записей они же возвращаются в качестве root_id (а надо бы NULL)... Для нижних уровней нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 17:47 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=291&tid=2005208]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 366ms |

| 0 / 0 |
