Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить всех предков / 3 сообщений из 3, страница 1 из 1
24.03.2019, 19:35
    #39790664
KonstMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить всех предков
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE "Service"
("ServiceId" INT IDENTITY PRIMARY KEY,
	"ParentId" INT NULL,
	"ServiceName" VARCHAR(512) NOT NULL);

CREATE TABLE "Prog"
("ProgId" INT IDENTITY PRIMARY KEY,
	"ServiceId" INT NOT NULL);



Вложенность неизвестна. Необходимо получить всех предков всех записей по Prog.ServiceId.
Перечень полей: ServiceName, ServiceName1, ServiceName2...
...
Рейтинг: 0 / 0
24.03.2019, 22:19
    #39790684
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить всех предков
KonstMV,

читайте документацию https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql
ищиите пример по слову предки: ancestors
...
Рейтинг: 0 / 0
25.03.2019, 09:13
    #39790761
KonstMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить всех предков
Решено. Спасибо!
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
WITH ProgAndParentAll (ServiceId, ParentId, ServiceName)
	AS
	(
		SELECT ServiceId, ParentId, ServiceName FROM Service
		WHERE ServiceId IN (SELECT ServiceId FROM Prog)
		UNION ALL
		SELECT t1.ServiceId, t1.ParentId, t1.ServiceName FROM ProgAndParentAll, Service t1
		WHERE t1.ServiceId = ProgAndParentAll.ParentId  
	)
   SELECT * FROM ProgAndParentAll
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить всех предков / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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