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

Откуда:
Сообщений: 16
Друзья, очень плохо понимаю рекурсивные запросы, потому прошу помочь с следующей задачей.

Дерево представлено в виде:

CIRELATIONID SOURCECI (потомок) TARGETCI (родитель)

180 001_FBS_CF_2 001_FBS_SER_7
102 001_FBS_SER_7 Server2

Необходимо вывести дерево. Заранее благодарю!
16 июн 14, 13:11    [16168974]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
fat32al1ty
Необходимо вывести дерево.

select * from mytable
16 июн 14, 13:14    [16168988]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
fat32al1ty,

Вот пример построение рекурсивного дерева по парент-чайлд

WITH nm AS 
-- рекурсное построение дерева номенклатуры 
(
	SELECT [nm_id]
		  ,[nm_id_parent] = NULL
		  ,[nm_code]
		  ,[nomenclature_Name]
		  ,[nm_parent_code]
		  ,[Resp_Code]
		  ,[id_Responsible]
		  ,[Resp_name]
		  ,[Senior_Name]
		  ,[Senior_Code]
		  ,[id_Senior]
		  ,[nm_parent_name]
		  ,[Article]
		  ,[IsFolder]
		  ,[deleted]
		  ,coord_Code
		  ,coord_Name
		  ,L = 0
	  FROM [Dictionary].[vw_Nomenclature_1C_2] nm0 
	  WHERE [nm_parent_code] IS NULL -- корневой уровень

	  UNION ALL 

	SELECT nm1.[nm_id]
		  ,nm_id_parent = nm.[nm_id]
		  ,nm1.[nm_code]
		  ,nm1.[nomenclature_Name]
		  ,nm1.[nm_parent_code]
		  ,[Resp_Code] = ISNULL(nm1.[Resp_Code], nm.[Resp_Code])
		  ,[Resp_Code] = ISNULL(nm1.[id_Responsible], nm.[id_Responsible])
		  ,[Resp_name] = ISNULL(nm1.[Resp_name], nm.[Resp_name])
		  ,[Senior_Name] = ISNULL(nm1.[Senior_Name], nm.[Senior_Name])
		  ,[Senior_Code] = ISNULL(nm1.[Senior_Code], nm.[Senior_Code])
		  ,[id_Senior] = ISNULL(nm1.[id_Senior], nm.[id_Senior])
		  ,[nm_parent_name] = ISNULL(nm1.[nm_parent_name], nm.[nm_parent_name])
		  ,nm1.[Article]
		  ,nm1.[IsFolder]
		  ,nm1.[deleted]
		  ,coord_Code = ISNULL(nm1.coord_Code, nm.coord_Code)
		  ,coord_Name = ISNULL(nm1.coord_Name, nm.coord_Name)
		  ,L = nm.L + 1
	  FROM [Dictionary].[vw_Nomenclature_1C_2] nm1
	  INNER JOIN nm ON nm1.[nm_parent_code] = nm.[nm_code] -- рекурсивный JOIN
)
SELECT 
	   [nm_id]
      ,[nm_id_parent]
      ,[nm_code]
      ,[nomenclature_Name]
      ,[nm_parent_code]
      ,[Resp_Code]
      ,[id_Responsible]
      ,[Resp_name]
      ,[Senior_Name]
      ,[Senior_Code]
      ,[id_Senior]
	  ,[id_Responsible_id_Senior] = [id_Responsible] * CAST(1000000000 AS BIGINT) + [id_Senior]
      ,[nm_parent_name]
      ,[Article]
      ,[IsFolder]
      ,[deleted]
	  ,coord_Code = ISNULL(coord_Code, -1)
	  ,coord_Name = ISNULL(coord_Name, 'Неизвестный')
      ,[L]
FROM nm 
16 июн 14, 13:18    [16169016]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
fat32al1ty,

тынц
16 июн 14, 13:51    [16169289]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
fat32al1ty
Member

Откуда:
Сообщений: 16
Вот еще хотел уточнить что используется DB2
16 июн 14, 13:57    [16169340]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
fat32al1ty
Вот еще хотел уточнить что используется DB2

А форум по Microsft SQL server я выбрал потому, что здесь больше народа ?
16 июн 14, 13:59    [16169358]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
fat32al1ty
Member

Откуда:
Сообщений: 16
Glory,

Я не думаю что это имеет большое значение.
16 июн 14, 14:08    [16169432]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
fat32al1ty
Я не думаю что это имеет большое значение.

Тогда к чему ваше уточнение про "используется DB2" ?
16 июн 14, 14:15    [16169494]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
Вам уже был дан ответ выше. 16169016

И исходя из вашего сообщения
fat32al1ty
Glory,

Я не думаю что это имеет большое значение.
с адаптацией у вас не возникнет никаких проблем.
16 июн 14, 14:21    [16169546]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсивный запрос  [new]
fat32al1ty
Member

Откуда:
Сообщений: 16
Всем спасибо, особенно Алексею Куренкову. Дальнейшее общение в разделе DB2.
16 июн 14, 14:54    [16169822]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить