powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск листьев в дереве ..
5 сообщений из 5, страница 1 из 1
Поиск листьев в дереве ..
    #39931116
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Есть сервер:
Код: sql
1.
2.
select @@VERSION
Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)   Mar 18 2018 09:11:49   Copyright (c) Microsoft Corporation  Developer Edition (64-bit)



Есть таблица LINKS содержащая два столбца SourceID и TargetID (ИД Родительской задачи и её дочки соответственно)

SourceID TargetID11 2112 2716 3221 3527 4529 4645 77

нужно вывести все "листья", т.е. из данного примера это ИД: 32 , 35 , 46 , 77
Иерархия может быть глубже (специально не стал делать для лучшей наглядности)

Может быть есть какой то уже известный алгоритм перебора? Или придется изобретать велосипед?
...
Рейтинг: 0 / 0
Поиск листьев в дереве ..
    #39931123
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULER,

Все листья от какой-то заданной корневой ноды (списка нод), или вообще все листья в таблице?
...
Рейтинг: 0 / 0
Поиск листьев в дереве ..
    #39931124
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULER
Здравствуйте.
Есть сервер:
Код: sql
1.
2.
select @@VERSION
Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)   Mar 18 2018 09:11:49   Copyright (c) Microsoft Corporation  Developer Edition (64-bit)




Есть таблица LINKS содержащая два столбца SourceID и TargetID (ИД Родительской задачи и её дочки соответственно)

SourceID TargetID11 2112 2716 3221 3527 4529 4645 77


нужно вывести все "листья", т.е. из данного примера это ИД: 32 , 35 , 46 , 77
Иерархия может быть глубже (специально не стал делать для лучшей наглядности)

Может быть есть какой то уже известный алгоритм перебора? Или придется изобретать велосипед?

лист - это тот, у которого нет дочерних объектов.

Код: sql
1.
2.
3.
4.
select 
from 
where not exists 
  
...
Рейтинг: 0 / 0
Поиск листьев в дереве ..
    #39931130
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULER,

проще некуда - листья:

Код: sql
1.
2.
3.
SELECT l1.* FROM LINKS l1 
LEFT JOIN LINKS l2 ON l1.TargetId = l2.SourceId 
WHERE l2.SourceId IS NULL 
...
Рейтинг: 0 / 0
Поиск листьев в дереве ..
    #39931401
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
MAULER,

проще некуда - листья:

Код: sql
1.
2.
3.
SELECT l1.* FROM LINKS l1 
LEFT JOIN LINKS l2 ON l1.TargetId = l2.SourceId 
WHERE l2.SourceId IS NULL 



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


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