powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить всех предков
3 сообщений из 3, страница 1 из 1
Получить всех предков
    #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
Получить всех предков
    #39790684
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KonstMV,

читайте документацию https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql
ищиите пример по слову предки: ancestors
...
Рейтинг: 0 / 0
Получить всех предков
    #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
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить всех предков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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