Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Как из базы (id,parentid) можно скопировать какой-нибудь элемент со всеми вложениями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 14:26 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 14:36 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Опять через рекурсию или вложенные циклы. То, что предложил Дмитрий, подойдет только для 2-х уровневых деревьев. Классическая структура id, parentid в общем случае не предназначена для обработки через Select-SQL. Да, она легко модифицируется, но получение из нее выборок - это большие проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 14:57 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
ВладимирМОпять через рекурсию или вложенные циклы. Ну я в общем-то так и думал. Но всеж надеялс - может есть какое-нибудь простое решение... ВладимирМ Классическая структура id, parentid в общем случае не предназначена для обработки через Select-SQL. Да, она легко модифицируется, но получение из нее выборок - это большие проблемы. Мне в принципе, надо просто скопировать (сдублировать) ветви в базе (но со всеми вложениями). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 15:48 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Ну, если очень хочется, то почитай здесь http://www.foxclub.ru/zhur/index.php?id=6&act=view Это выборка из иерархического списка с использованием UDF-функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 16:10 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 11:02 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
ankr Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. правильно ли я понял, что должно быть поле level в таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 09:55 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Field Level is calculated, not from primary table, just for debugging. Primary table actually must have fields ID ar ParentID, field Name is optional. * Sorry za English, uz menia klava bez cirilici. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 10:36 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
AnKrField Level is calculated, not from primary table, just for debugging. Primary table actually must have fields ID ar ParentID, field Name is optional. * Sorry za English, uz menia klava bez cirilici. с английским я не силен, а с sql - еще хуже (я только учусь ) но как понять это: Код: plaintext если я чего-то не понимаю, чего читать на тему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 13:07 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
AnKrField Level is calculated, not from primary table, just for debugging. Primary table actually must have fields ID ar ParentID, field Name is optional. * Sorry za English, uz menia klava bez cirilici. сейчас усиленно врубаюсь код ... может, и пойму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 13:13 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
По сути, ankr предложил вложенный цикл. Просто результат промежуточных расчетов сохраняется в итоговой выборке. m.lev - это НЕ поле таблицы. Это переменная памяти. Счетчик, который динамически формируется в процессе выполнения цикла. Поскольку очередной цикл формирует выборку следующего уровня, то m.Lev содержит порядковый номер уровня вложенности. В данном случае начиная с 1. Его логика примерно следующая: -) Первым шагом отбираем прямых потомков для заданного значения ID. Т.е. те записи у которых ParentID = заданному ID. Результат записывается в курсор Items -) Далее организуется цикл, выход из которого возможен только в том случае, если в результат выборки не попадет ни одной записи (больше нечего выбирать) -) Внутри цикла выбираются записи у которых значение ParentID = хотябы одному значению ID из курсора Items, но при этом значение собственно ID не равно ни одному значению ID из курсора Items. Т.е. по сути, отбираются все элементы следующего уровня для всех элементов, ранее отобранных в курсор Items -) Результат выборки записывается в тот же самый курсор Items и выполняется следующий шаг цикла. Правда, в приведенном синтаксисе уровень вложенности (значение m.Lev) корректно будет отображаться только до 9 уровня. Но это мелочь. Легко можно обойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 21:29 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Я для выбора всех Node дерева, относящиеся к данному, использую простой алгоритм, основанный на стеке: 1. Помещаем в стек исходный Node 2. Цикл: пока в стеке что-то есть 3. Снимаем с верхушки стека Node и добавляем в дерево 4. Помещаем в стек все подчиненные Node относительно текущего 5. Конец цикла. С уважением, Алексей. P.S. Если интресно, могу подробный код опубликовать. P.P.S Стек создан на основе класса Custom ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 22:01 |
|
||
|
Как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
ankr Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. easier :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 23:36 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=336&tid=1594808]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 305ms |

| 0 / 0 |
