SoloCodigo

Bases de Datos => SQL Server => Mensaje iniciado por: lencho en Miércoles 8 de Agosto de 2007, 01:07

Título: Recursividad
Publicado por: lencho en Miércoles 8 de Agosto de 2007, 01:07
Tengo una tabla de tipo recursiva, es decir:

Código: Text
  1. Create Table Unidad(
  2.      idUnidad int primary key,
  3.      descripcion varchar,
  4.      idUnidadPadre int,
  5.      foreign key (idUnidadPadre) references Unidad(idUnidad)
  6. )
  7.  

y mi problema viene cuando a partir de un IDUNIDAD, necesito traer todos sus equivalencias, es decir su padre, su abuelo , etc,  e hijos, nietos, etc.
 
Supongo que esto se puede hacer mediante recursividad, peroo !!!!, no me ubico para hacer esto en SQL.

BYTE.
Título: Re: Recursividad
Publicado por: lencho en Martes 14 de Agosto de 2007, 01:52
aqui esta la recursividad.

Código: Text
  1. WITH DirectReports (IDPADRE, IDOPCION, NOMBRE, Level)
  2.     AS
  3.     (
  4.     -- Anchor member definition
  5.       SELECT E.IDPADRE, E.IDOPCION, E.NOMBRE, 0 AS Level
  6.       FROM SEG_T_OPCION AS e
  7.       WHERE E.IDPADRE IS NULL AND E.IDOPCION = @IDFORM
  8.       UNION ALL
  9.  
  10.     -- Recursive member definition
  11.       SELECT E.IDPADRE, E.IDOPCION, E.NOMBRE, Level + 1
  12.       FROM SEG_T_OPCION AS e
  13.       INNER JOIN DirectReports AS d
  14.         ON e.IDPADRE = d.IDOPCION
  15.     )
  16.     -- Statement that executes the CTE
  17.     SELECT IDPADRE, IDOPCION, NOMBRE, Level
  18.     FROM DirectReports
  19.  


con esta consulta pude obtener a partir de un padre, todos sus hijos, nietos, etc.

BYTE.
Título: Re: Recursividad
Publicado por: lencho en Jueves 23 de Agosto de 2007, 01:43
pero lo que no pude es que a partir de un ID cualquiera, traer sus padres (si es que los tiene), sus hijos (si es que los tiene).

lo unico que se me ocurrio es con dos consultas, la primera encontrar su padre, y la segunda la consulta que esta arriba.

Saludos.


BYTE.
Título: Re: Recursividad
Publicado por: abel_cuentas_b en Martes 2 de Octubre de 2007, 06:26
que chevere que tu mismo saques tus propias concluciones  :)

se ve que le das duro al  :comp:
Título: Re: Recursividad
Publicado por: lencho en Miércoles 3 de Octubre de 2007, 04:36
Cita de: "abel_cuentas_b"
que chevere que tu mismo saques tus propias concluciones  :)

se ve que le das duro al  :comp:
pues, es que hay veces que no nos pueden ayudar. Y como realmente lo necesito, tenia que estar intentando resolverlo, y no quedarme con los brazos cruzados, esperando que me lo hagan !!! :D  :D  :D

Saludos.

BYTE.
Título: Re: Recursividad
Publicado por: JuanK en Domingo 14 de Octubre de 2007, 20:11
nose, pero debe existir algo e SQL Sever parecido al Coonect by prior de oracle, que precisamente hace ese tiop de cosas de una manera muy facil.