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

Откуда:
Сообщений: 119
Вот такая таблица:
CREATE TABLE [dbo].[Classification](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[ParentID] [int] NULL,
	[Title] [varchar](10) NULL
 CONSTRAINT [PrimaryKeyConstraint1] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING ON
GO

ALTER TABLE [dbo].[Classification]  WITH CHECK ADD  CONSTRAINT [ForeignKeyConstraint1] FOREIGN KEY([ParentID])
REFERENCES [dbo].[Classification] ([ID])


Надо написать запрос, к-рый будет возвращать на первом месте родителя с id=заданному, а потом в порядке иерархии всех его потомков всех уровней. Как это сделать?

PS. Вот такой запрос:

with c(id,parentid, newname)
as
(
select ID, isnull(parentid, 0),title
from dbo.Classification
where parentid is null
union all
select t.id, isnull(t.parentid, 0),t.title
from dbo.Classification t
join c on t.parentid=c.id
)

select * from c
where parentid=1


возвращает не то, что надо.
8 апр 12, 14:19    [12383091]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 - Как выбрать дерево со всеми потомками, начиная с заданной parentID?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
with c(id,parentid, newname)
as
(
select ID, isnull(parentid, 0),title
from dbo.Classification
where id = 1
union all
select t.id, isnull(t.parentid, 0),t.title
from dbo.Classification t
join c on t.parentid=c.id
)
select * from c order by id 

???
8 апр 12, 14:24    [12383103]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2005 - Как выбрать дерево со всеми потомками, начиная с заданной parentID?  [new]
Landwarrior
Member

Откуда:
Сообщений: 119
Knyazev Alexey,

Спасибо, оно самое!
8 апр 12, 22:45    [12384983]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить