Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   SubConsultas (https://www.clubdelphi.com/foros/showthread.php?t=12991)

Carlex 03-08-2004 05:55:54

SubConsultas
 
Hola amigos, tengo una duda y me gustaria sus opiniones. Tengo un query q me seleciona la info segun el fondo al q pertenezcan, hasta ahi todo bien, la duda es la siguiente este fondo pertenece a un departamento y este departamento tiene sus regionales, si deseo obtener un resultado, el cual este segun el fondo y luego segun la regional debo usar una subconsulta?, segun la bd q tengo, usando el wizard de sql server me jala todos los datos de la regional, relacionandolos con el fondo, aun cuando el fondo solo tenga una regional. debo usar una subconsulta que me selecione la regional para luego seleccionar el fondo y mostrar los resultados?

¿¿¿¿¿SELECT F.CodFondo, C.S_Nombre, C.S_Apellido, C.N_CI, D.M_Monto, D.FechaPago, (SELECT R.CodRegional FROM TRegional)
FROM TFondo F, TCliente C, TDetalle D
WHERE F.CodFondo=12?????

Gracias

Neftali [Germán.Estévez] 03-08-2004 09:58:43

Creo que ésto puedes hacerlo utilizando JOIN, que es mucho más eficiente que utilizar Subconsultas, pero con la explicación no me queda claro como están relacionadas las tablas; Puedes poner la estructura de las tablas (sobre todo cómo están relacionadas unas con otras).

Carlex 05-08-2004 04:31:32

Gracias Neftali por tu ayuda, y si tenias razon ;) con un JOIN era asi de simple, a esto me salta la duda: cuando se que debo usar subconsultas, y como es el sintaxis, mas o menos?

Neftali [Germán.Estévez] 05-08-2004 14:23:55

Bueno, por lo general yo uso Subconsultas cuando no hay otro remedio... ;)

La idea es generar una consulta interior que devuelve un campo, y la exterior hace una consulta completa cuyo filtro en el WHERE es buscar en el campo de la interior (te lo pongo de memoria..., espero no equivocarme);

Código SQL [-]
SELECT * FROM CLIENTES Where CodCliente IN
(SELECT CodCLIENTE FROM otraTabla WHERE ...)

Si te fijas la consulta interior devolverá n registros con un único campo (códigos de cliente); la Exterior busca todos los clientes cuyo CodCliente se los que devuelve la primera consulta. Lo principal es que ambos campos coincidan.


La franja horaria es GMT +2. Ahora son las 18:07:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi