Моите шаблони
Често искате да получите всички родители за група от елементи. Не обичам да използвам цикли и рекурсия, освен ако не е абсолютно необходимо. От дълго време исках да намеря универсален начин, за предпочитане чрез заявка.
Решението от уебсайта 1s има значително ограничение: трябва да знаете броя на нивата предварително.
Първият метод е лишен от този недостатък, но има други:
1. Резултатът от заявката не може да бъде качен във временна таблица, т.к запитването се основава на
2. Има дублиращи се редове в получената заявка, така че трябва да извършите допълнителна обработка, за да елиминирате този ефект.
Въпреки това често използвам този метод поради липса на по-просто решение. Подходящ е за малки йерархични директории.
Вторият метод е модификация на метода, предложен от 1s. Недостатъкът на този метод:
1. Ниска производителност, т.к правят се голям брой връзки, като се използва и условието ИЛИ
2. Строго задайте броя на нивата
Следователно, той също е подходящ само за директории с малък брой елементи.
Специални оферти
Без значение как. Просто извадката преминава през 5 нива, но самият брой нива не е ограничен. Друго нещо е, че заявката е в цикъл.
Благодаря на всички за критиките.
Някой може ли да предложи вариант тази задача да се решава изключително чрез заявки с възможност за поставяне на резултата във временна таблица. Например, би било много полезно загенериране на отчети на ACS.
Решенията, използващи вградения език, са очевидни, моля, не ги предлагайте.
Ако вече сте видели тази статия или статията Нива, дълбочина, предшественици, цикли и аналози на заявка, но не сте намерили даденото там решение подходящо, тогава може да сте били объркани от факта, че няма самите заявки, а функции за изграждането им. Но всъщност предположих, че е очевидно, че вместо функция можете да използвате заявка, създадена предварително за нея.
Например, за справочника "Номенклатура" според принципите, описани в статията, можете да използвате заявката:
Тук се предполага, че справочникът "Номенклатура" има НЕ ПОВЕЧЕ ОТ 32 нива на влагане (в живота едва ли има директории с по-голяма дълбочина на влагане). И има само 5 повтарящи се фрагмента в заявката! Ако изведнъж има повече нива, например до хиляда, тогава можете да добавите само още 5 фрагмента от същия тип към предложената партидна заявка. Горната заявка не е заявка в цикъл. Не се изгражда динамично, но може да бъде написан напълно предварително. Може да се използва на всеки етап от по-сложна заявка. И структурата му е доста проста.