Цитата:
Изначально опубликовано Владимир Максимов
Дерево... Да... Думаю
mazzy Вас пошлет... надеюсь по ссылке...

Да знаю, знаю.

Неоднократно видел его мнение по данному вопросу, и... даже уважаю его.
Цитата:
Я с AXAPTA работаю всего полгода, но даже с таким опытом вижу, что Вы себе нажили гемморой на долгие годы вперед. Коламбус, конечно, молодцы, но их цель - это зарабатывание денег, а не объяснение клиентам почему так делать нельзя. И денег на Вас они заработают много...
Се ля ви, се ля бизнес.

Я к сожалению точно так же как и коламбус не могу влиять на требования начальства и бизнес-процессы нашей фирмы, приходится выполнять то что приказывают выполнять.
Цитата:
Ладно, если опустить эмоции, то попробуйте в Вашей таблице InventClassifierRelations для каждого узла дерева делать ссылку на самого себя. Т.е. это будут строки у которых ParentId=ChildId и Level=0
Тогда запрос будет элементарен...
Мне кажется решение Vadik-а более элегантно. Добавлять дополнительные ссылки не надо, а EXISTS всё равно должен сработать правильно (если я правильно понимаю SQL и реляц. алгебру).
Цитата:
PS: Мне интересно, как с такой (...) структурой таблицы InventClassifierRelations Вы делаете перемещение узла? Удаление и вставка - это легко, а вот передвинуть ветку со всеми узлами при такой структуре ...
Вообще то это и есть то место, коим данный метод "жертвует" ради скорости и простоты в других местах. Именно здесь проявляется его "корявая древовидная сущность", но на самом деле всё не так уж и плохо - просто надо удалить все записи в InventClassifierRelations, относящиеся к данному узлу и всем его подузлам (1 операция select и n операций delete, где n - число строк вернувшееся select-ом), изменить данные в таблице InventClassifer и запустить рекурсивную процедуру rebuildClassifierRelations для перемещенного узла (выполняется за m * (1 select + n insert), где m - число подузлов в узле, n - число строк в результате select-а.
У нас размер этого классификатора где то 15 элементов на 1-ом уровне и в среднем по 5-10 элементов на остальных подуровнях, так что не всё так уж и плохо.
А вообще то операция перемещения групп настолько редкая штука, что я её даже не реализовывал еще.