Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запрос  [new]
Туплю
Guest
Есть таблица с полями Id, ParentId (родитель), Code, Name.
Нужно написать запрос, чтобы при выборе Id выводились: этот Id + все его дочерние элементы (но не родительские). Как это сделать?
14 июл 09, 15:57    [7414258]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Поискать по слову "дерево", "иерархия".
14 июл 09, 15:58    [7414265]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
...
where (Id = @Id
   or ParentId = @Id)
какой вопрос - такой ответ
14 июл 09, 15:59    [7414280]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Туплю
Guest
Паганель,
глубина иерархии неограниченная.
14 июл 09, 16:01    [7414305]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
SELECT @@version

???
14 июл 09, 16:02    [7414313]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Туплю
Guest
pkarklin,
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
14 июл 09, 16:03    [7414322]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Туплю
pkarklin,
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.1 (Build 2600: Service Pack 2)


BOL->WITH common_table_expression->Example D

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/27cfb819-3e8d-4274-8bbe-cbbe4d9c2e23.htm
14 июл 09, 16:05    [7414332]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Туплю
глубина иерархии неограниченная.
тогда Вам надо не только дочек, но и внучек, и правнучек...
WITH общее_табличное_выражение (Transact-SQL), см. примеры
14 июл 09, 16:07    [7414353]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Туплю
Guest
pkarklin, Паганель
C with запрос уже писал, не получается ограничить именно дочерними (и внучатыми) элементами...
14 июл 09, 16:11    [7414387]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Туплю
pkarklin, Паганель
C with запрос уже писал, не получается ограничить именно дочерними (и внучатыми) элементами...


Гм... Пример разобрали? Что не получается? Запрос покажите.
14 июл 09, 16:12    [7414395]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Туплю
глубина иерархии неограниченная.
Туплю
не получается ограничить именно дочерними (и внучатыми) элементами...
что-то я уже совсем перестал понимать что Вам нужно
Прошу привети пример тестовых данных и желаемого результата
14 июл 09, 16:15    [7414410]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Туплю
Guest
  WITH allgroups (Id, ParentId, ItemLevel) AS
  (
    SELECT groups.Id, groups.ParentId, 0 AS ItemLevel
    FROM dbo.GroupsTable groups
	  INNER JOIN ItemsTable items ON items.KfkId = groups.Id
             WHERE  kfkid='221D7865-14A5-4AB5-82B5-533F2BD35DB4' (ограничение на выборку по группе)   
  UNION ALL
    SELECT groups.Id, groups.ParentId, ItemLevel + 1			 
    FROM dbo.GroupsTable AS groups
    INNER JOIN allgroups ON groups.Id = allgroups.ParentId
  )
  SELECT Id, MAX(ItemLevel) 
  FROM allgroups
  GROUP BY Id

Запрос выбирает все группы (родительские и дочерние), а нужно только дочерние.
14 июл 09, 16:23    [7414463]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Туплю
Guest
Вернее этот запрос возвращает только родительские группы...
14 июл 09, 16:25    [7414477]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
... ON groups.Id = allgroups.ParentId
замените на
... ON groups.ParentId = allgroups.Id
14 июл 09, 16:28    [7414509]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Туплю
Guest
Паганель, Спасибо огромное!!!
14 июл 09, 16:34    [7414568]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
пожалуйста
я правда так и не понял зачем там группировка
ну да ладно, Ваши данные, Вам виднее...
14 июл 09, 16:36    [7414584]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить