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

Откуда:
Сообщений: 17
Подскажите пожалуйста. как из этого условия можно сделать рекурсию?. всякот пытался, но не удаётся. либо зациклится, либо ошибки выдаёт.

ALTER PROCEDURE [dbo].[usp_CompanyEditorTop10Select] 
(
	@companyType nvarchar(1000),
	@TierID int
)
AS
DECLARE @TierName nvarchar(255)
SET @TierName = (SELECT Name
				FROM Tiers
				WHERE @TierID = TierID)

				
SELECT TOP 10 *
FROM  Companies

WHERE [CompanyTypes] LIKE '%'+@companyType+'%' and 
([DirectoryListingStatus] = 'Live' and (@TierID <> 0 or EditorsChoice = 'true'))
AND (@TierID = 0 OR CompanyID IN
		( 
			SELECT 	CompanyID
			FROM 	CompanyTiers
			WHERE 	TierID  IN 
			(
				SELECT TierID
				FROM Tiers
				WHERE [Name] LIKE @TierName + '%'
			)
			AND (HasOffice = 1) 			
		)
	)

здесь с начало ищут имя, а потом по нему выбирают всех. теперь надо сделать что бы он рекурсивно опускался вниз.
есть поле TierId, а есть ParentTierID - это родитель.
Так вот например задали id 1024. Он с начало смотри саму её, потом всех её детей. У детей так же выбирает всех внуков уже получается. и так до последнего.
15 сен 14, 07:38    [16574751]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия  [new]
aleks2
Guest
Verbal
всякот пытался, но не удаётся. либо зациклится, либо ошибки выдаёт.


1. Врешь.
2. Определения таблиц не приведены.
15 сен 14, 07:42    [16574755]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия  [new]
Glory
Member

Откуда:
Сообщений: 104751
Verbal
либо зациклится,

Здесь нечему зацикливаться

Verbal
теперь надо сделать что бы он рекурсивно опускался вниз.

http://technet.microsoft.com/ru-ru/library/ms186243(v=sql.105).aspx
15 сен 14, 09:25    [16574875]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить