Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como hacer referencia a un query dentro de otro query? (https://www.clubdelphi.com/foros/showthread.php?t=35248)

JuanBCT 05-09-2006 16:25:12

Como hacer referencia a un query dentro de otro query?
 
Hola, que tal? Tengo un problema con un query, espero que me puedan ayudar. Antes de implementarla en mi programa, probé desde el Database Desktop (uso tablas Paradox) la siguiente sentencia sql:

Código SQL [-]
SELECT DISTINCT NUMERO_FG701, DESCRIPCION_FG701 FROM FG701             
INNER JOIN FG704              
ON (FG701.NUMERO_FG701=FG704.NUMERO_FG704)

Ahora, tengo que insertarla en mi aplicación pero con la tabla FG704 filtrada a través de otra sentencia sql, la cual me devuelve en un query1. Entonces armo el query2 de la siguiente manera...

Código Delphi [-]
with Relacion.Query2 do
  begin
    Active:=false;       
    sql.clear;
    sql.add ('SELECT DISTINCT NUMERO_FG701, DESCRIPCION_FG701 FROM FG701');        
    sql.add ('INNER JOIN query1');               
    sql.add ('ON (FG701.NUMERO_FG701=query1.NUMERO_FG704)');
    active:=true;       
  end;

... pero me devuelve un error, que la tabla query1 no existe. Román me explicó en este post como hacer referencia a una segunda tabla con otro alias, pero no encuentro forma de hacerlo con un query. ¿Alguien sabe como se hace?

Gracias y un saludo

roman 05-09-2006 17:22:25

No puedes hacer esto. Una cosa es referirte a otra tabla u otra base de datos en la consulta, y otra referirte a una consulta, pues ésta no existe físicamente emn la bd. Pero lo único que tienes que hacer es agregar las condiciones del filtrado en la misma consulta:

Código SQL [-]
select distinct NUMERO_FG701, DESCRIPCION_FG701 FROM FG701             
inner join FG704
on (FG701.NUMERO_FG701=FG704.NUMERO_FG704)
where
  condiciones sobre los campos de FG704

// Saludos

JuanBCT 05-09-2006 18:35:25

Gracias Roman, anduvo muy bien. La verdad es que se me escapó, es mucho más simple de esta manera... aún si se pudiera hacer lo que yo quería originalmente.

Saludos!


La franja horaria es GMT +2. Ahora son las 06:44:47.

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