• Jueves 28 de Marzo de 2024, 19:18

Autor Tema:  Recursividad  (Leído 2758 veces)

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Recursividad
« en: Miércoles 8 de Agosto de 2007, 01:07 »
0
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.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Recursividad
« Respuesta #1 en: Martes 14 de Agosto de 2007, 01:52 »
0
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.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Recursividad
« Respuesta #2 en: Jueves 23 de Agosto de 2007, 01:43 »
0
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.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

abel_cuentas_b

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Recursividad
« Respuesta #3 en: Martes 2 de Octubre de 2007, 06:26 »
0
que chevere que tu mismo saques tus propias concluciones  :)

se ve que le das duro al  :comp:

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Recursividad
« Respuesta #4 en: Miércoles 3 de Octubre de 2007, 04:36 »
0
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.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Recursividad
« Respuesta #5 en: Domingo 14 de Octubre de 2007, 20:11 »
0
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.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io