Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Построить запрос (возможно рекурсия) / 6 сообщений из 6, страница 1 из 1
29.08.2019, 14:11
    #39855164
ogienko_ev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить запрос (возможно рекурсия)
Добрый день, не могу построить запрос. Фото, что должно быть на выходе приложил.

Есть таблица, где поля Id, ParentId.

Мне нужно подать на вход значение id (99999), запрос должен вернуть всех косвенных родителей для данной записи. Это вообще реально сделать однтм запросом?

Может быть есть лучше/проще способы?
...
Рейтинг: 0 / 0
29.08.2019, 14:13
    #39855169
ogienko_ev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить запрос (возможно рекурсия)
Да, и текущую строку тоже надо вернуть, потому что там находится ParentId, для входного Id.
...
Рейтинг: 0 / 0
29.08.2019, 14:14
    #39855171
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить запрос (возможно рекурсия)
ogienko_ev,

cte
...
Рейтинг: 0 / 0
29.08.2019, 14:36
    #39855188
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить запрос (возможно рекурсия)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
USE master
GO


DECLARE @InTemp TABLE(ID INT,PARENT_ID INT);
INSERT @InTemp(ID,PARENT_ID)
 VALUES(9,0),(999,9),(99999,999);

DECLARE @InStart INT;
SELECT @InStart=99999;

WITH CTE AS
(
  SELECT ID,PARENT_ID
  FROM @InTemp
  WHERE ID=@InStart
  
  UNION ALL
  
  SELECT TAB.ID,TAB.PARENT_ID
  FROM @InTemp AS TAB
  JOIN CTE AS X ON TAB.ID=X.PARENT_ID
  
  
) 
SELECT C.ID,C.PARENT_ID
FROM CTE AS C
OPTION (MAXRECURSION 100)



З.Ы. Фото задания просто шикарное
...
Рейтинг: 0 / 0
29.08.2019, 14:42
    #39855193
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить запрос (возможно рекурсия)
Лучше, всё-таки, не фотографии присылать, а текст с необходимой информацией.
Которую хотя бы можно было скопипастить в виде текста (кода, словесной постановки задачи и т.п.).
Причём код можно было бы сразу вставить в SQL Server Manager и выполнить.
Например, создать у себя таблицы и наполнить их данными.

Это же для вас элементарно, разве нет?
...
Рейтинг: 0 / 0
29.08.2019, 14:43
    #39855194
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить запрос (возможно рекурсия)
londinium
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
USE master
GO


DECLARE @InTemp TABLE(ID INT,PARENT_ID INT);
INSERT @InTemp(ID,PARENT_ID)
 VALUES(9,0),(999,9),(99999,999);

DECLARE @InStart INT;
SELECT @InStart=99999;

WITH CTE AS
(
  SELECT ID,PARENT_ID
  FROM @InTemp
  WHERE ID=@InStart
  
  UNION ALL
  
  SELECT TAB.ID,TAB.PARENT_ID
  FROM @InTemp AS TAB
  JOIN CTE AS X ON TAB.ID=X.PARENT_ID
  
  
) 
SELECT C.ID,C.PARENT_ID
FROM CTE AS C
OPTION (MAXRECURSION 100)




З.Ы. Фото задания просто шикарноеMAXRECURSION 100 и так задано по умолчанию.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Построить запрос (возможно рекурсия) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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