Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рекурсивный запрос (The maximum recursion 100) / 4 сообщений из 4, страница 1 из 1
11.11.2020, 13:45
    #40017141
unq
unq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивный запрос (The maximum recursion 100)
Помогите с рекурсивным запросом.
Что делаю не так?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH deps AS
    (
        SELECT r.ID,
               ru.UserID,
               r.ParentID,
               r.TypeID
        FROM RoleUsers ru WITH (NOLOCK)
        INNER JOIN Roles r WITH(NOLOCK)
            ON r.ID = ru.ID
        INNER JOIN DepartmentRoles dr WITH(NOLOCK)
            ON dr.ID = r.ID
        WHERE ru.UserID = '3db19fa0-228a-497f-873a-0250bf0a4ccb'
        UNION ALL
        SELECT d.ID,
               d.UserID,
               d.ParentID,
               d.TypeID
        FROM deps d
        JOIN Roles r WITH(NOLOCK)
        ON r.ParentID = d.ID
    )
SELECT * FROM deps



Выдает 100 одинаковых строк и ошибку
Код: sql
1.
[23000][530] The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
...
Рейтинг: 0 / 0
11.11.2020, 13:50
    #40017143
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивный запрос (The maximum recursion 100)
unq,

Петли в запросе, например. Где видно, что в первом запросе выбираются корневые элементы?
...
Рейтинг: 0 / 0
11.11.2020, 13:53
    #40017147
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивный запрос (The maximum recursion 100)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WITH deps AS 
    (
        SELECT r.ID,
               ru.UserID,
               r.ParentID,
               r.TypeID
        FROM RoleUsers ru WITH (NOLOCK)
        INNER JOIN Roles r WITH(NOLOCK)
            ON r.ID = ru.ID
        INNER JOIN DepartmentRoles dr WITH(NOLOCK)
            ON dr.ID = r.ID
        where r.ParentID is null
        UNION ALL
        SELECT d.ID,
               d.UserID,
               d.ParentID,
               d.TypeID
        FROM deps d
        JOIN Roles r WITH(NOLOCK)
        ON r.ParentID = d.ID
    )
SELECT * FROM deps WHERE deps.UserID = '3db19fa0-228a-497f-873a-0250bf0a4ccb'
...
Рейтинг: 0 / 0
11.11.2020, 13:58
    #40017149
unq
unq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивный запрос (The maximum recursion 100)
invm,

Оно!))
Спасибо!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рекурсивный запрос (The maximum recursion 100) / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]