Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/10/2007, 09:05
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
De acuerdo Utilizando CTE en SP en 2005

La seleccion recursiva de informacion en SQL 2005 se puede realizar utilizando Common Table Expressions.... aunque no se retornan en orden jerarquico...

Código:
------------------------------------------------------
-- Generacion de informacion de prueba del ejemplo
------------------------------------------------------

if object_id('tempdb..#tmpTempo') is not null Drop table #tmpTempo

create table #tmpTempo (Id_area int, nombre varchar(20), prearea int)

Insert into #tmpTempo values (1, 'papa uno', null)
Insert into #tmpTempo values (2, 'papa dos', null)
Insert into #tmpTempo values (3, 'papa tres', null)

Insert into #tmpTempo values (4, 'hijo uno', 1)
Insert into #tmpTempo values (5, 'hijo dos', 2)
Insert into #tmpTempo values (6, 'hijo tres', 3)

Insert into #tmpTempo values (7, 'U1', 4)
Insert into #tmpTempo values (8, 'U11', 7)
Insert into #tmpTempo values (9, 'U21', 8)

------------------------------------------------------
-- Inicia seleccion recursiva utilizando CTE.
------------------------------------------------------
Declare @IdNum int

Set @IdNum = 1;   -- Seleccionar los hijos del registro 1

With Areas (Id_area, nombre, prearea)
AS
(
	Select Id_area, nombre, prearea
	from  #tmpTempo 
	Where prearea = @IdNum
	Union all
	Select T.Id_area, T.nombre, T.prearea
	From   #tmpTempo T
    Inner join Areas  A
    On    T.prearea = A.Id_area
)

Select * from Areas
El formato se podria aplicar utilizando XML o bien haciendo un ciclo en la aplicacion (ASP), aunque ya seria tema de otro foro...
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.