Ayuda para realizar una consulta en varias tablas a una base de datos con sql server

Hola iislas:
Una consulta, tengo una aplicación donde uso una tabla "Equipos" cuya clave primaria en "IdEquipo", en la cual guardo los datos generales de todos los equipos que tengo, pero a la vez cada equipo puede ser hijo de otro (pe. Computadoras - Pc1-Monitor, en lo real hay más niveles), para esto tengo un campo llamado "IdPadre", donde va la clave del equipo de nivel superior que lo contiene (pe. En Monitor el IdPadre es el IdEquipo de Pc1), los equipos los visualizo en treeview donde lo construyo usando las claves primarias y los IdPadre.
En mi BD guardo registros de las intervenciones que se hacen en todos los equipos sin importar el nivel (pe. Pc1 - Se cambio de lugar, Monitor - Se hizo mantenimiento). Para ello selecciono el nodo en el árbol y me muestra sus datos y puedo llamar un form donde ingreso sus intervenciones, guardando un registro por cada intervención.
Mi consulta: Se necesita hacer consultas de las intervenciones en los equipos pero que me consideren a los hijos. (Pe. Si deseo lo hago al nivel de Computadora que me de todas las intervenciones de la Pc1, Pc2, etc, y sus hijos, o a nivel de Pc1 que me de las intervenciones en sus hijos (teclado, monitor, etc). Como podría hacer esto de la mejor manera.
Gracias.

1 respuesta

Respuesta
1
Si tienes SQL Server 2000, solo soporta hasta 32 ciclos anidados, si tienes 2005, entonces la recursividad la resuelves con CTE (Common Table Expression)
Hola Iislas:
Mira estoy usando SQLServer 2005 Express, si pudieras enviarme un ejemplo o un enlace donde encontrar como usar el CTE te lo agradecería mucho. Por lo pronto estoy buscando en la red.
Antes que me contestaras lo que hice fue crear una rutina que me navegue todos los hijos del nodo que selecciono en el Treeview y me cree una lista de sus códigos, luego hacia una consulta en el cual usaba el IN, algo como esto:
Select ... From ... Where .. IN (lista de los códigos de los nodos hijos)
Saludos.
Donde viene explicado paso a paso, como utilizar CTE, o en su caso, accede a esta liga:
http://msdn.microsoft.com/en-us/library/ms186243.aspx
Ok, Iislas, gracias por tu apoyo, si no fuera por personas como tú que ayudan desinteresadamente muchos como yo tardaríamos más tiempo en aprender y solucionar problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas