Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Рекурсия в ХП


Автор: Ronin08 31.3.2009, 13:01
Доброго времени суток

Имеются таблицы Item(ItemId(PK), Item, ParentId,...) и IncExp (CountId, ItemId(FK),...), 
Я разобрался как используя рекурсию извлечь всех потомков Item.ItemId:

Код

BEGIN
    WITH 
   tree (id, items,idParent) 
   AS (SELECT ItemId, Item, ParentId
      FROM Item 
      WHERE ItemId = @ItemId 
      UNION ALL 
      SELECT ItemId, Item, ParentId 
      FROM Item  
          INNER JOIN tree t 
           ON t.id = Item.ParentId)
    SELECT * FROM tree 
END


Как сделать Хранимую процедуру, которая бы для конкретного IncExp.CountId и Item.ItemId (включая всех детей )выводила всю информацию из IncExp

Автор: Ronin08 1.4.2009, 14:03
Неужели никто не сталкивался?

Я попробывал так:
Код

begin 
WITH 
   tree (id, items, idParent) 
   AS (SELECT Item.ItemId, Item.Item, Item.ParentId
      FROM Item 
      WHERE Item.ItemId = @ItemId and Item.UserId = @UserId and Item.IncFlag=@IncFlag
      UNION ALL 
      SELECT Item.ItemId, Item.Item, Item.ParentId 
      FROM Item  
      JOIN tree   ON tree.id = Item.ParentId)
    SELECT * FROM tree 

select 
    IncExp.CountName,
    IncExp.Expanse,
    tree.items
from IncExp
inner join tree on IncExp.ItemId = tree.id
end

Но пишет Invalid object name 'tree'. в строке 10 при выполнении процедуры
В чем может быть ошибка?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)