Arból de departamentos/usuarios en T-SQL

29/07/2004 - 10:36 por cdiaz | Informe spam
Con la siguiente estructura de tablas:

Tabla Usuarios

Id de usuario Nombre de usuario Id de departamento
1 Usu1 1
2 Usu2 4
3 Usu3 5
4 Usu4 6


Tabla Departamentos

Id de departamento Nombre de departamento Id departamento padre

1 Dirección general 1
0
2 Dirección general 2
0
3 Subdir. 1-1
1
4 Subdir. 2-1
2
5 Dept. 1-1-1
3
6 Dept. 2-1-1
4


Tengo que obtener:

1) Una lista con la ubicación de cada uno de los usuarios dentro de los
departamentos


El resultado esperado sería:

Nivel 1 Nivel 2 Nivel 3
Usuario

Dirección general 1
usu1
Dirección general 1 Subdir. 1-1 Dept. 1-1-1 usu3
Dirección general 2 Subdir. 2-1
usu2
Dirección general 2 Subdir. 2-1 Dept. 2-1-1 Usu4

2) Una lista con la ubicación de cada uno de los usuarios dentro de los
departamentos + aquellos departamentos que no tengan usuarios asignados

El resultado esperado sería:

Nivel 1 Nivel 2 Nivel 3
Usuario

Dirección general 1
usu1
Dirección general 1 Subdir. 1-1
Sin usuarios asignados
Dirección general 1 Subdir. 1-1 Dept. 1-1-1 usu3
Dirección general 2
Sin usuarios asignados
Dirección general 2 Subdir. 2-1
usu2
Dirección general 2 Subdir. 2-1 Dept. 2-1-1 Usu4

Hay que tener en cuenta que el número de niveles de anidamiento en el árbol
de departamentos no está determinado de antemano.
Me gustaría hacerlo con T-SQL

Gracias.
 

Leer las respuestas

#1 Carlos Sacristan
29/07/2004 - 11:11 | Informe spam
Echa un vistazo al tema "Expandir jerarquías" de los BOL. Ahí explica
cómo listar un conjunto de resultados de forma jerárquica. Una vez
conseguido esto, es dar unas pequeñas vueltas para conseguir lo que buscas


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"cdiaz" escribió en el mensaje
news:
Con la siguiente estructura de tablas:

Tabla Usuarios

Id de usuario Nombre de usuario Id de departamento
1 Usu1 1
2 Usu2 4
3 Usu3 5
4 Usu4 6


Tabla Departamentos

Id de departamento Nombre de departamento Id departamento


padre

1 Dirección general 1
0
2 Dirección general 2
0
3 Subdir. 1-1
1
4 Subdir. 2-1
2
5 Dept. 1-1-1
3
6 Dept. 2-1-1
4


Tengo que obtener:

1) Una lista con la ubicación de cada uno de los usuarios dentro de los
departamentos


El resultado esperado sería:

Nivel 1 Nivel 2 Nivel 3
Usuario

Dirección general 1
usu1
Dirección general 1 Subdir. 1-1 Dept. 1-1-1 usu3
Dirección general 2 Subdir. 2-1
usu2
Dirección general 2 Subdir. 2-1 Dept. 2-1-1 Usu4

2) Una lista con la ubicación de cada uno de los usuarios dentro de los
departamentos + aquellos departamentos que no tengan usuarios asignados

El resultado esperado sería:

Nivel 1 Nivel 2 Nivel 3
Usuario

Dirección general 1
usu1
Dirección general 1 Subdir. 1-1
Sin usuarios asignados
Dirección general 1 Subdir. 1-1 Dept. 1-1-1


usu3
Dirección general 2
Sin usuarios asignados
Dirección general 2 Subdir. 2-1
usu2
Dirección general 2 Subdir. 2-1 Dept. 2-1-1


Usu4

Hay que tener en cuenta que el número de niveles de anidamiento en el


árbol
de departamentos no está determinado de antemano.
Me gustaría hacerlo con T-SQL

Gracias.


Preguntas similares