Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

juntar varios selects

Estas en el tema de juntar varios selects en el foro de SQL Server en Foros del Web. quiero juntar varios selects para que muestren un solo resultado de forma horizontal osea a la derecha, estos son los selects: select U.strUsuNombre,P.strPrmDescripcion as Nivel1 ...
  #1 (permalink)  
Antiguo 25/06/2010, 16:45
 
Fecha de Ingreso: junio-2010
Ubicación: Monterrey, México
Mensajes: 13
Antigüedad: 12 años, 7 meses
Puntos: 0
juntar varios selects

quiero juntar varios selects para que muestren un solo resultado de forma horizontal osea a la derecha, estos son los selects:

select U.strUsuNombre,P.strPrmDescripcion as Nivel1 from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre = 0
--and U.strUsuNombre = 'asanchez'
order by U.strUsuNombre



select P.strPrmDescripcion Nivel2 from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre like '%_0000%'
--and U.strUsuNombre = 'asanchez'
order by U.strUsuNombre

select P.strPrmDescripcion from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre like '%000'
and P.intPrmPadre not like '%_0000%'
--and U.strUsuNombre = 'asanchez'
order by U.strUsuNombre

select P.strPrmDescripcion from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
--and P.intPrmPadre = P.intPrmLlave
and P.intPrmPadre not like '%000'
and P.intPrmPadre not like '%_0000%'
and P.intPrmPadre != 0
--and U.strUsuNombre = 'asanchez'
order by U.strUsuNombre

alguna idea?

saludos y gracias.
  #2 (permalink)  
Antiguo 25/06/2010, 17:26
 
Fecha de Ingreso: enero-2004
Ubicación: mexico
Mensajes: 110
Antigüedad: 19 años
Puntos: 0
Respuesta: juntar varios selects

quieres que todo eso se muestre en 1 solo registro? osea que el resultado de cada uno de los queries se vuelva una columna?
__________________
Controles Web para ASP.NET (Tabstrip, Datepicker, Calendar, Panel colapsable...) en
www.enlasys.com
  #3 (permalink)  
Antiguo 25/06/2010, 17:36
 
Fecha de Ingreso: junio-2010
Ubicación: Monterrey, México
Mensajes: 13
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: juntar varios selects

speack gracias por contestar

quiero que aparezcan en varias columnas

columna1 columna2 columna3 columna4 columna5


saludos.
  #4 (permalink)  
Antiguo 25/06/2010, 17:43
 
Fecha de Ingreso: enero-2004
Ubicación: mexico
Mensajes: 110
Antigüedad: 19 años
Puntos: 0
Respuesta: juntar varios selects

ok si te entendi bien (una sola fila con 4 columnas) seria algo asi

select c1.campo1, c2.campo2, c3.campo3, c4.campo4 from
(
select campo1 from ...
) c1
left join
(
select campo2 from ...
) c2 on 1=1
left join
(
select campo3 from ...
) c3 on 1=1
left join
(
select campo4 from ...
) c4 on 1=1


lo que estoy haciendo es un left join a cada sobconsulta para poder consultar los campos resultantes de cada una de ellas.

PD el 1=1 es para que junte los resultados siempre (eso no lo cambies, asi va).

Avisame que pes
__________________
Controles Web para ASP.NET (Tabstrip, Datepicker, Calendar, Panel colapsable...) en
www.enlasys.com
  #5 (permalink)  
Antiguo 28/06/2010, 10:52
 
Fecha de Ingreso: junio-2010
Ubicación: Monterrey, México
Mensajes: 13
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: juntar varios selects

que onda speack como estas?

oye hice el query que me dijiste pero hasta aqui si lo hace bien

select c1.Nombre ,c1.Nivel1--, c2.Nivel2--, c3.nivel3, c4.permiso
from
(select strUsuNombre Nombre, strPrmDescripcion as Nivel1 from
dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre = 0)c1

ADMIN Comun
ADMIN INNOVAT Cobros SE
ADMIN INNOVAT Calificaciones SE
ADMIN INNOVAT Interfase Bancaria SE
ADMIN INNOVAT Internet Escolar
APOMAT Comun
APOMAT INNOVAT Cobros SE
APOMAT INNOVAT Calificaciones SE
APONOCT Comun
APONOCT INNOVAT Cobros SE
APONOCT INNOVAT Calificaciones SE

pero a prtir de la segunda subconsulta

select c1.Nombre ,c1.Nivel1, c2.Nivel2--, c3.nivel3, c4.permiso
from
(select strUsuNombre Nombre, strPrmDescripcion as Nivel1 from
dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre = 0)c1
left join
(select strUsuNombre Nombre, strPrmDescripcion Nivel2 from
dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre like '%_0000%')c2 on 1=1

se duplica, triplica y mas todas los campos, esta es un parte

ADMIN Comun Configuración
ADMIN Comun Reportes
ADMIN Comun Utilerias
ADMIN Comun Configuración
ADMIN Comun Cobros
ADMIN Comun Reportes
ADMIN Comun Utilerias
ADMIN Comun Configuración
ADMIN Comun Calificaciones
ADMIN Comun Reportes
ADMIN Comun Utilerias
ADMIN Comun Interfase
ADMIN Comun Reportes
ADMIN Comun Configuración

a que crees que se deba?

saludos y gracias.
  #6 (permalink)  
Antiguo 28/06/2010, 10:59
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 17 años, 5 meses
Puntos: 39
Respuesta: juntar varios selects

Tiene que haber una relacion entre cada registro de tus querys: un campo en comun, sino como sabe el motor de SQL qué registro va con cual?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 28/06/2010, 11:10
 
Fecha de Ingreso: enero-2004
Ubicación: mexico
Mensajes: 110
Antigüedad: 19 años
Puntos: 0
Respuesta: juntar varios selects

Agregame al messenger
[email protected]
__________________
Controles Web para ASP.NET (Tabstrip, Datepicker, Calendar, Panel colapsable...) en
www.enlasys.com
  #8 (permalink)  
Antiguo 28/06/2010, 16:42
 
Fecha de Ingreso: junio-2010
Ubicación: Monterrey, México
Mensajes: 13
Antigüedad: 12 años, 7 meses
Puntos: 0
De acuerdo Respuesta: juntar varios selects

ya quedo el query gracias a speack por su ayuda y paciencia, aqui se los pongo para ver a quien le puede ayudar tambien

select
c1.Nombre ,
c1.Nivel1,
c2.Nivel2,
c3.nivel3,
c4.permiso
from
(
select
P.intPrmLlave,
U.shtUsuLlave,
strUsuNombre Nombre,
strPrmDescripcion as Nivel1
from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre = 0
) c1
inner join
(
select
P.intPrmLlave,
U.shtUsuLlave,
P.intPrmPadre,
strPrmDescripcion Nivel2
from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre like '%_0000%'
) c2 on c1.shtUsuLlave = c2.shtUsuLlave
and c1.intPrmLlave = c2.intPrmPadre
inner join
(
select
P.intPrmLlave,
U.shtUsuLlave,
P.intPrmPadre,
strPrmDescripcion nivel3
from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre like '%000'
and P.intPrmPadre not like '%_0000%'
)c3 on c1.shtUsuLlave = c3.shtUsuLlave
and c2.intPrmLlave = c3.intPrmPadre
inner join
(
select
P.intPrmLlave,
U.shtUsuLlave,
P.intPrmPadre,
strPrmDescripcion permiso
from dbo.catUsuarios U, dbo.relUsuariosPermisos UP, dbo.catPermisos P
where U.shtUsuLlave = UP.shtUsuLlave
and UP.intPrmLlave = P.intPrmLlave
and P.intPrmPadre not like '%000'
and P.intPrmPadre not like '%_0000%'
and P.intPrmPadre != 0
) c4 on c1.shtUsuLlave = c4.shtUsuLlave
and c3.intPrmLlave = c4.intPrmPadre
--where c2.Nombre = c1.Nombre
group by c1.Nombre, c1.Nivel1, c2.Nivel2, c3.nivel3, c4.permiso, c3.intPrmLlave, c4.intPrmLlave
order by c1.Nombre, c3.intPrmLlave, c4.intPrmLlave

Etiquetas: juntar, selects
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:46.