Select en tabla recursiva

23/05/2007 - 20:08 por Mauricio | Informe spam
Hola a todos,
en un sistema en el que estoy trabajando tengo una tabla llamada
PROYECTOS que simula un árbol, así que tengo un campo que es el
Identificador de la rama Padre. Dentro de los proyectos se guardan
archivos, por lo que también hay una tabla ARCHIVOS. Gráficamente es
algo así.

| - |
| |
PROYECTOS --|
|
|>> ARCHIVOS

Imaginen el explorador de windows, con las carpetas a la izquierda y
los archivos a la derecha.
Si quiero saber los archivos de un proyecto, el select es:
SELECT PRO.IDProyecto, ARC.IdArchivo, ARC.Nombre
FROM PROYECTOS PRO, ARCHIVOS ARC
WHERE PRO.IDProyecto = ARC.IdProyecto

La pregunta es: tengo forma, con un SELECT de saber todos los archivos
que pertenecen a un proyecto y sus sub-proyectos?
Espero haberme explicado.
Muchas gracias desde ya.



Mauricio
Copenhague, Dinamarca
 

Leer las respuestas

#1 Gustavo Larriera (MVP)
23/05/2007 - 20:36 | Informe spam
Si usas SQL Server 2005 puedes resolver consultas recursivas usando Common
Table Expressions (CTE). Puedes ver acá:

http://www.theserverside.net/tt/art...eFunctions

Si usas SQL Server 2000, deberás resolver iterativamente la consulta
recursiva. Puedes mirar acá para tener la idea:

http://mssqltips.com/tip.asp?tip“8

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Mauricio" wrote:

Hola a todos,
en un sistema en el que estoy trabajando tengo una tabla llamada
PROYECTOS que simula un árbol, así que tengo un campo que es el
Identificador de la rama Padre. Dentro de los proyectos se guardan
archivos, por lo que también hay una tabla ARCHIVOS. Gráficamente es
algo así.

| - |
| |
PROYECTOS --|
|
|>> ARCHIVOS

Imaginen el explorador de windows, con las carpetas a la izquierda y
los archivos a la derecha.
Si quiero saber los archivos de un proyecto, el select es:
SELECT PRO.IDProyecto, ARC.IdArchivo, ARC.Nombre
FROM PROYECTOS PRO, ARCHIVOS ARC
WHERE PRO.IDProyecto = ARC.IdProyecto

La pregunta es: tengo forma, con un SELECT de saber todos los archivos
que pertenecen a un proyecto y sus sub-proyectos?
Espero haberme explicado.
Muchas gracias desde ya.



Mauricio
Copenhague, Dinamarca



Preguntas similares