PDA

Ver la Versión Completa : Como usar un select dentro de otro


erasmorc
13-12-2005, 16:34:47
Buenos dias,

La pregunta resumida es como relacionar un campo que esta contenido en el resultado de un select con otra tabla.

Tengo el siguiente problema tengo un select que me arroja unos resultado los cuales quiero utilizar para relacionar uno de los campos de ese resultado con otra tabla a travez de un join. como hacer el Join eso lo tengo bastante claro la pregunta es como utilizar el resultado del select que esta en esa misma sentencia. Las tablas y la base de datos son de SQL server 2000 y estoy usando el query analizer del mismo SQL.

Pienso que quizas con Queries anidados podria hacerlo pero no se como utilizarlos. Recuerden que el resultado del select no es una tabla fisica entonces eso es lo que no se como hacer tomar ese resultado del select o mejor dicho uno de sus campos para relacionarlo con otra tabla.

Si tienen algun link donde haya informacion, o algun ejemplo se los agradeceria, actualmente lo resolvi insertando ese resultado en otra tabla y haciendo la relacion a partir de ella, pero no es un metodo elegante ni profesional.

Gracias anticipadas.

Slds,
Neo, Rep. Dom.

ContraVeneno
13-12-2005, 16:42:48
select Avg(Calif) as Prom
from (select Puntos as Calif
from Alum
group by AlumID) Tabla --"Tabla" es un nombre temporal para tu subconsulta
order by Prom



select *
from (select * from Tabla) temp

erasmorc
13-12-2005, 16:55:32
Buenos dias,


Lo siento pero no capte la idea

Slds,
FRC

ContraVeneno
13-12-2005, 17:00:34
¿Te referías a esto?

Select *
from UnaTabla
where UnCampo=(Select X From OtraTabla)

erasmorc
13-12-2005, 17:14:33
Buenas tardes,

Te voy a explicar el tema completo


Tengo esto

Select EA1.awb,RE1.numero,EA1.hawb,RE1.fecha,CL2.empresa As Embarcador,RE1.Valor,CL1.empresa,EA1.awb,SUM(RP1.bultos) As Tbultos,
SUM(RP1.peso) As Tbruto,RE1.Tipo

From EMBARQUEAEREO as EA1

LEFT JOIN Recepcion as RE1 ON EA1.numero = RE1.embarque
LEFT JOIN RecepProductos as RP1 ON RE1.numero = RP1.numero
LEFT JOIN Clientes as CL1 ON RE1.consignatario = CL1.codigo
LEFT JOIN Clientes as CL2 ON RE1.embarcador = CL2.codigo

WHERE EA1.awb= :Pguia

group by EA1.awb,RE1.numero,EA1.hawb,RE1.fecha,CL2.empresa,RE1.Valor,CL1.empresa,EA1.awb,RE1.Tipo
Order By RE1.numero



como veras tengo columnas agregadas en ese select que son el resultado del SUM por lo cual no puedo incluir ahi un join que relaciones con otra tabla que tiene un campo descripcion que es tipo Text y estos campos no me lo permite colocarlos dentro del group by, entonces lo que he pensado es el resultado de ese query hacer el join por el campo correspondiente con la tabla que tiene las descripciones.

Saludos,
Neo.

FOURIER
13-12-2005, 23:08:51
Eso es lo que querías hacer con los Join, si tienes alguna duda mi correo es el originalfourier@hotmail.com

Select EA1.awb,RE1.numero,EA1.hawb,RE1.fecha,CL2.empresa As Embarcador,RE1.Valor,CL1.empresa,EA1.awb,(select SUM(RP1.bultos) from RecepProductos where RP1.numero=RE1.numero) As Tbultos,(select
SUM(RP1.peso) from RecepProductos where RP1.numero=RE1.numero) As Tbruto,RE1.Tipo From EMBARQUEAEREO as EA1,Recepcion as RE1, Clientes as CL1,Clientes as CL2
WHERE EA1.awb= :Pguia and EA1.numero = RE1.embarque and RE1.consignatario = CL1.codigo and RE1.embarcador = CL2.codigo
Order By RE1.numero;

vtdeleon
14-12-2005, 01:33:32
Saludos

A los dos ultimos foristas que publicaron, favor de utilizar las etiquetas Sql, mas informacion en los enlaces de mi firma