• Viernes 19 de Abril de 2024, 03:47

Autor Tema:  Consulta Recursiva  (Leído 2012 veces)

EEC

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Consulta Recursiva
« en: Viernes 31 de Julio de 2009, 15:25 »
0
Alguien puede ayudarme a hacer la consulta recursiva de la tabla Dispositivos que cuenta con Id_Dispositivo, DescripcionDispositivo, ComponenteDispositivo.
El tema es que ComponenteDispositivo es otro dispositivo que tiene Dispositivo, osea por eso es recursivo
Y debe mostrar en forma de arbol.....
Me ayudan porfa!!!!
Gracias

LordKanabis

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Consulta Recursiva
« Respuesta #1 en: Viernes 7 de Agosto de 2009, 17:51 »
0
Si pudieras ser algo más explícito de como es la tabla y la forma del resultado te pudieramos ayudar.  :D

Saludos.

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Consulta Recursiva
« Respuesta #2 en: Viernes 21 de Agosto de 2009, 18:42 »
0
Todo eso lo podrias meter a un SP y utilizar cursores que se se encarguen de realizar lo que tu buscas.
 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Shiquilla

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Consulta Recursiva
« Respuesta #3 en: Jueves 10 de Septiembre de 2009, 17:37 »
0
Lo podrías lograr partiendo con una tabla de apoyo donde vayas insertando y marcando los datos que tienes.

Supongamos que dicha tabla tiene el ID del registro y un campo bTrabajo de tipo BIT (Cuando = 1 entonces ya se han insertado sus hijos)
 
Por ejemplo (Suponiendo que la tabla real se llama TABLADATOS):

Código: SQL
  1. DECLARE @Apoyo TABLE (idRegistro INT NOT NULL PRIMARY KEY, bTratado NOT NULL DEFAULT 0, bNuevo  NOT NULL DEFAULT 1)
  2. INSERT INTO @Apoyo (idRegistro) VALUES (1) -- Aquí habría que hacer la primera INSERT (el/los padres de todos los demás)
  3. WHILE EXISTS (SELECT TOP 1 1 FROM @Apoyo WHERE bTratado = 0 AND bNuevo = 1)
  4. BEGIN
  5.     UPDATE @Apoyo SET bNuevo = 0 WHERE bTratado = 0
  6.     INSERT INTO @Apoyo (idRegistro) SELECT idRegistro FROM TablaDatos A INNER JOIN @Apoyo B ON A.idSiguienteComponente = B.idRegistro WHERE B.bTratado = 0 AND B.bNuevo = 0
  7.     UPDATE @Apoyo SET bTratado = 1 WHERE bNuevo  = 0
  8. END
  9.  

Ya he hecho cosas de este estilo y este método va muy bien ya que puedes tener niveles infinitos, espero haberme explicado bien.

Saludos,
« §hÿqµïllæ »