|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Добрый день! Есть табличка, где есть иерархическая структура с id и parent. Также в этой табличке есть столбец assigneeName (ФИО руководителя). Если выполнять иерархический запрос по каждому из руководителей (ограничивая в условии where) - запрос выполняется корректно по всем ФИО, кроме трёх. Подскажите, как можно было бы посмотреть, в каком месте нарушается иерархия? Пример запроса привожу ниже: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 00:02 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Угадай мелодию или 5 из 36? Ты, страдалец, как определил что "некорректно на троих"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 05:44 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
aleks222, Если в условии where указать всех, кроме этих троих (WHERE e.assigneeName in ()), то запрос рано или поздно отработает. Если добавить этих троих или просто выполнить с одним из проблемных (как указано ниже) - запрос выдаёт ошибку: "Сообщение 530, уровень 16, состояние 1, строка 35 The statement terminated. The maximum recursion 100 has been exhausted before statement completion." ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 10:47 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
zorlo, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
так пробовали ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 10:54 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
entrypoint, Не, OPTION(MAXRECURSION 0) не помогало, знаю про эту тему. Запрос просто уходил в бесконечное время. Я вычислил на каких id ошибка. Выявил 3 id, где parent должен быть NULL, а стоял id. Подменил на Null - всё взлетело. В любом случае большое спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 15:02 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
zorlo Подскажите, как можно было бы посмотреть, в каком месте нарушается иерархия? Смысл? Просто добавьте в рекурсивную часть условие, что выбираемая запись отсутствует в CTE среди уже отобранных записей. А для выявления - добавить поле-флаг, и вместо отказа, когда выбираемая запись уже есть, помечать в нём, а вот уже по этой пометке - не обрабатывать на следующем витке. Так в список попадут записи, начав от которых, можно получить всё кольцо, и найти ту запись кольца, в которой косяк (в общем случае такую запись можно найти только вручную - вернее, решить, что вот именно эта запись кольца косячная). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 15:13 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
entrypoint, поищите по форуму, где пролетал код поиска петель-замыканий в дереве. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 15:37 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Владислав Колосов, Владислав Колосов entrypoint, поищите по форуму, где пролетал код поиска петель-замыканий в дереве. Зачем ? у человека ошибка zorlo "Сообщение 530, уровень 16, состояние 1, строка 35 The statement terminated. The maximum recursion 100 has been exhausted before statement completion." выбрано возможное количество итераций, а не зацикливание возможно после этого 22065041 что-нибудь и прояснилось, но до этого - никаких других сведений не было ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 16:41 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
entrypoint выбрано возможное количество итераций, а не зацикливание ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 16:57 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Akina, Akina записи мульён раз выбирает... Приведённый скрипт позволяет сделать всего 100 итераций Akina он по кругу бегает Откуда это Вам известно, если автор не предоставил данные для которых возникает эта ошибка ? А так если в таблице циклические ссылки ... то ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 17:23 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
entrypoint Akinaон по кругу бегает Откуда это Вам известно, если автор не предоставил данные для которых возникает эта ошибка ?Потому что автор про это написал, в итоге: 22065297 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 19:06 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
entrypoint , что-то Вас, друг мой, несёт. Сначала товарищ говорит zorlo Если добавить этих троих или просто выполнить с одним из проблемных (как указано ниже) - запрос выдаёт ошибку: "Сообщение 530, уровень 16, состояние 1, строка 35 The statement terminated. The maximum recursion 100 has been exhausted before statement completion." Дальше он снимает ограничение по глубине рекурсии по чьему-то явно "вредному совету" (каковой, вообще говоря, бред, ибо такой вложенности в "иерархии руководителей" - а именно так определена предметная область запроса,- быть не может, и, следовательно, имеет место зацикливание), и вполне ожидаемо двумя постами ниже сообщает, что получил zorlo OPTION(MAXRECURSION 0) не помогало, знаю про эту тему. Запрос просто уходил в бесконечное время. Или, иными словами, в бесконечную рекурсию. Каковая и бывает исключительно в случае кольцевых ссылок и без ограничения на глубину рекурсии. Так что за хронологией следить надо всем, а не только нам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 11:35 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
zorlo, Соберите строковую цепочку снизу вверху. -01-02-03-04- и по ней смотрите. Если хотите, чтобы написал, дайте тестовые данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 11:56 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Модератор: Остапы! Вас понесло. Ведите себя дружно. И прекратите обсуждать участников форума вместо темы топика. Все равно все потру. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:31 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
entrypoint, там бесконечный цикл, читайте внимательно все сообщения автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2020, 13:52 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2020, 11:13 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Владислав Колосов entrypoint, там бесконечный цикл, читайте внимательно все сообщения автора. Соберите строковую цепочку снизу вверху. -01-02-03-04- и по ней смотрите. В ТОМ ЧИСЛЕ ПО НЕЙ ОСТАНОВИТЕ БЕСКОНЕЧНЫЙ ЦИКЛ. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2020, 12:40 |
|
Как выявить нарушение иерархии иерархической табличке ms sql?
|
|||
---|---|---|---|
#18+
Если на sql.ru в поиск вбить ни дерево, ни граф, ни даже список во вьюху, а тупо рекурсивный запрос, будет просто ворох тем, в которых были даны ответы и на такие сложности, как у ТС. Я уже молчу о том, что будет если через Яндекс поискать: t-sql рекурсия site:sql.ru! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 16:51 |
|
|
start [/forum/topic.php?fid=46&fpage=71&tid=1686591]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 149ms |
0 / 0 |