|
![]() |
#1 |
Участник
|
Цитата:
Изначально опубликовано mazzy
Эк, вас колбасит то... 1. тут в каких то топиках выяснили что по настоящему сложные запросы в axapta построить нельзя из-за неправильной расстановки скобок в получающихся SQL-селектах, да и нет полного соответствия и той гибкости запросов, который доступен в стандартном SQL 2. нет возможности просто и естественно создать и выполнить "динамически конструируемый" запрос .executeQuery( str SelectStatement ), что меня один раз уже сильно угнетало Впрочем к сути дела это не относится. Цитата:
Боже мой! Опять дерево.
![]() ![]() Цитата:
Alks, нет у вас Аксапты, нет у вас компьютера.
Пожалуйста, объясните мне на пальцах или на бумажке что же вы хотите! Рассказывать чем являлся старый подход не буду, т.к. смысла не имеет. Новый подход заключается в ведении таблицы InventClassifier ( ClassifId, ParentId, прочие атрибуты... ), а в таблицу InventTable добавлено поле (ClassifId). Цель изначально стояла в том, чтобы при выделении группы (элемента классификатора) в таблице товаров отфильтровывались все записи, принадлежащие выделенному элементу, либо какому либо из его подэлементов (подчиненных ему групп). Да и каскадное удаление элементов классификатора тоже сталкивалось бы с многочисленными select-запросами. В старом варианте решения это было просто сделать (даже очень просто), а в новом по понятным причинам - совершенно геморройное это дело становится. Для решения этой задачи я ввожу дополнительную таблицу InventClassifierRelations, тем самым внося в базу избыточность (но уже избыточность в строках, а не столбцах, как ранее), где для каждого элемента классификатора храню сопоставление ( ParentId, ChildId, int Level ) для всех его родителей, на каком бы уровне он внутри них не находился, модифицирую методы insert и delete для InventClassifier. Теперь можно очень быстро - за один запрос отобрать все подгруппы для заданной на любом уровне вложенности. Каскадное удаление резко упрощается. И фильтрация классно бы решалась тем запросом про который я говорил... В скором времени проверю сообщение Vadik-а и если получится, будет ему тысяча благодарностей. ![]() |
|