SQL Server - Subquery en el From

   
Vista:

Subquery en el From

Publicado por Leonargi (2 intervenciones) el 11/06/2014 16:00:23
Buenos días,
espero que me puedan ayudar...

Cuento con: (solo coloque los campos basicos)
1 Tabla Filtro_espe con los campos id_filtro, Id_tabla, campo
1 Tabla de Tablas con los campos Id_tabla, NombreTabla, BaseDatos
1 Tabla Detalle_Filtro_espe con los campos Id_filtro, id_usuario, valor

necesito un query que me arroje por ejemplo los nombre de departamento registrado en la tabla departamento

creo que el query seria algo asi (voy de atras hacia adelante)

resultado seria nombredepartamento como campos, sistemas, administracion como valores del query

select nombredpto from departamento where id_departamento in (2,5)

sustituyo nombredpto por
select campo from filtro_espe where id_filtro = 1

sustituyo departamento por
select a.basedatos+a.nombretabla from tablas as a where a.id_tabla = (select id_tabla from filtro_espe where id_filtro = 1)

sustituyo el filtro id_departamento in(2,5) por
(select campo from filtro_espe where id_filtro = 1) in (select x.valor from detalle_filtro_espe where id_filtro = 1 and id_usuario = 1)

quedaria el query final
select (select campo from filtro_espe where id_filtro = 1) from (select a.basedatos+a.nombretabla from tablas as a where a.id_tabla = (select id_tabla from filtro_espe where id_filtro = 1)) where (select campo from filtro_espe where id_filtro = 1) in (select x.valor from detalle_filtro_espe where id_filtro = 1 and id_usuario = 1)

Espero que me entienda y por su pronta respuesta

gracias de antemano por la atención prestada
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
Imágen de perfil de Isaias

Subquery en el From

Publicado por Isaias (3180 intervenciones) el 11/06/2014 18:59:54
Estos dos SELECT, deberían integrarse al select final, pero con JOIN

select a.basedatos+a.nombretabla from tablas as a where a.id_tabla = (select id_tabla from filtro_espe where id_filtro = 1)

sustituyo el filtro id_departamento in(2,5) por
(select campo from filtro_espe where id_filtro = 1) in (select x.valor from detalle_filtro_espe where id_filtro = 1 and id_usuario = 1)
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

Subquery en el From

Publicado por Leonargi (2 intervenciones) el 11/06/2014 19:51:28
buen día gracias por responder pero no me serviria

por que en el primer from no conozco de primera mano el nombre de la tabla...

pero lo solucione así a través de un procedimiento

DECLARE @id_filtrado2 nvarchar (10) = CONVERT(varchar, @id_filtrado)
DECLARE @bd nvarchar (500) = NULL
DECLARE @execquery nvarchar (500) = NULL
DECLARE @campo nvarchar (500) = NULL
DECLARE @campo_filtro nvarchar (500) = NULL

SET @bd = (select TablasBD.BaseDatos+TablasBD.NombreTabla as tab FROM DESARROLLO.dbo.TablasBD where TablasBD.Id_tabla = (
select a.Id_tabla from Filtrado_tabla_form as a
where a.Id_filtrado = @id_filtrado))

SET @campo = (select c.NombreCampo from Filtrado_tabla_form as c
where c.Id_filtrado = @id_filtrado)

SET @campo_filtro = (select c.FiltroCampo from Filtrado_tabla_form as c
where c.Id_filtrado = @id_filtrado)

SET @execquery = 'SELECT '+ @campo + ' FROM ' + @bd + ' WHERE ' + @campo_filtro
+ ' IN ( SELECT VALOR FROM Filtrado_tabla_detalle where Id_filtrado = '+@id_filtrado2+' )' + 'ORDER by ' + @campo

EXECUTE sp_executesql @execquery
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