SQL - Ayuda con consulta SQL S

 
Vista:

Ayuda con consulta SQL S

Publicado por Aldo (2 intervenciones) el 28/06/2019 18:39:08
Hola a todos, necesito lograr crear una consulta, pero nunca había intentado hacer algo así y no se si es posible.

Tengo 2 tablas, la primera contiene el nombre de los contenedores principales y la segunda tiene el registro de las carpetas y documentos dentro del contenedor principal.

La primera tabla (contenedores) tiene estos campos
1. Código
2. Nombre

La segunda (registros) tiene estos campos
1. Codigo
2. Nombre
3. RegistroPadre
4. Contenedor

El campo 1 es el que tiene el código único de cada registro (puede ser un documento o una carpeta). El campo 2 tiene el nombre o descripción del registro, el campo 3 contiene el código del registro padre (o carpeta) donde está almacenado un documento y el campo 4 contiene el código de contendor donde está una carpeta principal.

Un ejemplo de los datos

Tabla 1
Codigo Nombre
850 Contenedor 1
860 Contenedor 2
870 Contenedor 3

Tabla 2
Codigo Nombre RegistroPadre Contenedor
100 Carpeta 1 0 850
101 Carpeta 2 0 850
102 Carpeta 3 0 850
103 Documento 1 100 0
104 Documento 2 100 0
105 Carpeta 1.1 100 0
106 Documento 3 105 0
107 Documento 4 101 0
108 Documento 5 100 0
109 Carpeta 1.1.1 105 0
110 Documento 6 109 0

Como verán en la segunda tabla el RegistroPadre apunta a otros registros dentro de la misma tabla. Tambien que el campo contenedor sólo tiene valor en las carpetas principales dentro de un contenedor. El resto de los registros no tienen ese valor.

Necesito lograr una consulta que por ejemplo me de todos los registros que estén dentro de la Carpeta 1

Contenedor Codigo Nombre RegistroPadre
850 100 Carpeta 1 0
850 103 Documento 1 100
850 104 Documento 2 100
850 105 Carpeta 1.1 100
850 108 Documento 5 105
850 109 Carpeta 1.1.1 105
850 110 Documento 6 109

En resumen necesito que me muestre todos los registros contenidos dentro de un contenedor específico.

No soy experto en SQL Server y de verdad agradeceré si alguien puede ayudarme con explicarme como puedo lograr este resultado.

Saludos

Aldo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con consulta SQL S

Publicado por Aldo (2 intervenciones) el 28/06/2019 21:25:01
Hola a todos,

He seguido buscando soluciones y este codigo que me permitió lograr lo que necesito. Tengo que agregar algunos otros campos, pero funciona bien tal y como está.

Por si es de ayuda para alguien, aquí les dejo este código. (Le agradezco a José Diz por su ayuda)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
declare @Contenedor smallint;
set @Contenedor= 850;
 
with Doc_Carpeta as (
SELECT Codigo, Nombre, RegistroPadre
  from Registros
  where Contenedor = @Contenedor
        and RegistroPadre = 0
union all
SELECT R.Codigo, R.Nombre, R.RegistroPadre
  from Doc_Carpeta as C
       inner join Registros as R on R.RegistroPadre = C.Codigo
)
SELECT @Contenedor as Contenedor,
       Codigo, Nombre, RegistroPadre
  from Doc_Carpeta;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar