Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Recursivo

Estas en el tema de Recursivo en el foro de SQL Server en Foros del Web. Hola amigos todos.. Alguien me puede ayudar orientandome como hago una funcion recursiva que traiga los valores de la siguiente estructura: Aviones | !__ Avx ...
  #1 (permalink)  
Antiguo 01/05/2008, 11:46
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Recursivo

Hola amigos todos..
Alguien me puede ayudar orientandome como hago una funcion recursiva que traiga los valores de la siguiente estructura:


Aviones
|
!__ Avx
.......|
........|__AVXXX
........|..........|
........|..........|___amtx
........|..........|___amty
........|__AVYYY
...................|___amtx

IdActivo Activo IdActivoPadre Nivel
2_______Aviones___0___________1
10______AVX______2___________2
12______AVXXX____10__________3
13______AVYYY____10__________4
16______amtx_____12__________4
19______amty_____12__________4
20______bxy______13__________4


Me explico:
Actualmente tengo un SP que me barre un conjunto de registros tomando en el WHERE el IdActivo=@PI_IdActivo; este @PI_IdActivo es el valor que coje al hacer clic el usuario dentro del arbol.

Esto me funciona OK cuando la categoria que selecciona es la ultima porque la cojo directo, pero cuando coje una categoria padre NO ME FUNCIONA porque no hay registros para esa categoria sino para las hijas...
POR LO TANTO...
Me gustaría hacer un barrido de todos las ctagorias que son hijas de la categoria seleccionada por el usuario.


Le estará muy agradecido a la persona que me de una manito en esto..ya que yo lo he intentado pero hago lios..

Gracias amigos..
PD: Estoy con SQLServer2005

Luis
  #2 (permalink)  
Antiguo 02/05/2008, 11:33
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Recursivo

Revisa este link, tal vez encuentres la solucion:


http://msdn.microsoft.com/en-us/library/ms186243.aspx
  #3 (permalink)  
Antiguo 02/05/2008, 15:04
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Recursivo

No he probado este script, pero tu como el interesado lo haras:
Código:
CREATE FUNCTION dbo.sp_Seek4NestedRec
(
    @PI_IdActivoPadre INT
)
RETURNS TABLE
AS
DECLARE @TableVar TABLE(IdActivo INT, Activo VARCHAR(20), IdActivoPadre INT, Nivel INT)
IF EXISTS(SELECT 1 FROM Aviones WHERE IdActivoPadre = @PI_IdActivoPadre)
BEGIN
    SET @TableVar = dbo.sp_Seek4NestedRec(@PI_IdActivo)
END
RETURN SELECT * FROM Aviones WHERE IdActivoPadre = @PI_IdActivoPadre
    UNION @TableVar
--@@NESTLEVEL
GO
DECLARE @t_aviones TABLE(IdActivo INT, Activo VARCHAR(20), IdActivoPadre INT, Nivel INT)
SET @t_aviones = dbo.sp_Seek4NestedRec(@PI_IdActivo)
SELECT * FROM @t_aviones
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 02/05/2008, 16:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Recursivo

flaviovich

No estoy en contra de tu funcion, solo que para 2005 me parece mejor utilizar CTE's ya que es algo mas nativo de esta version

Saludos
  #5 (permalink)  
Antiguo 05/05/2008, 15:18
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Recursivo

Gracias a todos me hice una funcion en base a las ayudas de acá y si me esta funcionando. Gracias a todos los amigos del foro.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:41.