Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получить всех предков  [new]
KonstMV
Member

Откуда:
Сообщений: 21
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...
24 мар 19, 19:35    [21842212]     Ответить | Цитировать Сообщить модератору
 Re: Получить всех предков  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3796
KonstMV,

читайте документацию https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql
ищиите пример по слову предки: ancestors
24 мар 19, 22:19    [21842281]     Ответить | Цитировать Сообщить модератору
 Re: Получить всех предков  [new]
KonstMV
Member

Откуда:
Сообщений: 21
Решено. Спасибо!
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
25 мар 19, 09:13    [21842425]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить