Select para unir 3 tablas sin usar tablas temporales

28/09/2006 - 01:50 por Jaisol | Informe spam
Ahorita tengo un nudo mental y no se como llegarle.

Abajo ejemplifico la situacion:

Tabla1:
col1, col2
1 2
2 3

Tabla2:
col1, col2, col3, col4
1 1 a b
2 2 a c

Tabla3:
dol1, dol2, dol3, dol4
1 5 a a
3 2 b b


Los campos col1 y col2 de Tabla1 y Tabla2 son del mismo tipo respectivamente
x lo q se puede hacer Tabla1.col1 = Tabla2.col1 y Tabla1.col2 = Tabla2.col2.

Los campos dol1, dol2, dol3 y dol4 de Tabla3 y Tabla2 son del mismo tipo
respectivamente x lo q se puede hacer Tabla3.dol1 = Tabla2.col1, ...
Tabla3.dol4 = Tabla2.col4


La idea es lograr un select (sin usar tablas temporales) q me resulte:

exp1, exp2, exp3, exp4
1 2
2 3
1 1 a b
2 2 a c
1 5 a a
3 2 b b

Para unir Tabla1 con Tabla2 puedo hacer:
select col1, col2, b.col3, b.col4 from Tabla1 a, Tabla2 b

Pero no se como lograr incluir la union con Tabla3 q tiene el mismo orden y
tipo de campos q Tabla2 pero con nombres de campos distintos.

Espero haberme explicado.

Slds y GRS!
 

Leer las respuestas

#1 Alejandro Mesa
28/09/2006 - 03:38 | Informe spam
Jaisol,

Prueba usando el operador "union all", para unir las tablas. Puedes
convertir los valores nulos de la primera expresion a que sean del mismo tipo
de col3 y col4 de t2. Suponiendo que col3 y col4 son varchar(25), por
ejemplo, entonces:

select col1, col2, cast(null as varchar(25)) as col3, cast(null as
varchar(25)) as col4
from dbo.t1

union all

select col1, col2, col3, col4
from dbo.t2

union all

select dol1, dol2, dol3, dol4
from dbo.t3
go


AMB


"Jaisol" wrote:

Ahorita tengo un nudo mental y no se como llegarle.

Abajo ejemplifico la situacion:

Tabla1:
col1, col2
1 2
2 3

Tabla2:
col1, col2, col3, col4
1 1 a b
2 2 a c

Tabla3:
dol1, dol2, dol3, dol4
1 5 a a
3 2 b b


Los campos col1 y col2 de Tabla1 y Tabla2 son del mismo tipo respectivamente
x lo q se puede hacer Tabla1.col1 = Tabla2.col1 y Tabla1.col2 = Tabla2.col2.

Los campos dol1, dol2, dol3 y dol4 de Tabla3 y Tabla2 son del mismo tipo
respectivamente x lo q se puede hacer Tabla3.dol1 = Tabla2.col1, ...
Tabla3.dol4 = Tabla2.col4


La idea es lograr un select (sin usar tablas temporales) q me resulte:

exp1, exp2, exp3, exp4
1 2
2 3
1 1 a b
2 2 a c
1 5 a a
3 2 b b

Para unir Tabla1 con Tabla2 puedo hacer:
select col1, col2, b.col3, b.col4 from Tabla1 a, Tabla2 b

Pero no se como lograr incluir la union con Tabla3 q tiene el mismo orden y
tipo de campos q Tabla2 pero con nombres de campos distintos.

Espero haberme explicado.

Slds y GRS!



Preguntas similares