Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2007
francisco260184 francisco260184 is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
francisco260184 Va por buen camino
Question Hacer un Query de otro Query

Hola, soy nuevo en esto del manejo de Delphi, antes programaba todo en VB.Net, pero por razones laborales tuve que migrar.
Mi pregunta es ¿Como se puede hacer un Query de otro Query?

Por ej.
SELECT q.campo1, q.campo2
FROM Query1 AS q;

Se puede o estoy totalmente perdido??
Gracias....
Responder Con Cita
  #2  
Antiguo 03-04-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Que base de datos estas usando?

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 03-04-2007
francisco260184 francisco260184 is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
francisco260184 Va por buen camino
Cita:
Empezado por vtdeleon
Que base de datos estas usando?

Saludos
Estoy utilizando una BD en Paradox
Responder Con Cita
  #4  
Antiguo 03-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
No creo que con Paradox puedas hacer eso que quieres. Tal vez en otras bases de datos si, seria cuestión de probar.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 03-04-2007
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
¿Puedes dar más detalles de lo que realmente quieres?, ya que seguramente se puede hacer lo que necesitas, pero sera cosa de enfocarlo de otra manera.

Un saúdo
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #6  
Antiguo 03-04-2007
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
Esta consulta me ha funcionado con Firebird 2.0, pero no con la 1.5.

Código SQL [-]
SELECT cuenta,titulo,sum(debe) as debe ,sum(haber) as haber FROM
SELECT cuenta,titulo,debe,haber FROM ldiario
WHERE fecha >= :Fecha1 and fecha <= :Fecha2
UNION ALL
SELECT cuenta,titulo,debe,haber FROM ldiarioh
WHERE fecha >= :Fecha1 and fecha <= :Fecha2
GROUP BY cuenta,titulo

Saludos.
Responder Con Cita
  #7  
Antiguo 03-04-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Me parece increible que te haya funcionado como está.

Deberías escribirla de la siguiente manera:

Código SQL [-]
    Select Datos.Cuenta, Datos.Titulo, Sum(Datos.Debe) As debe, 
             Sum(Datos.Haber) As Haber 
      From (
              Select cuenta, titulo, debe, haber 
                From ldiario
              Where fecha >= :Fecha1 And 
                       fecha <= :Fecha2
              Union All
              Select cuenta,titulo,debe,haber 
                From ldiarioh
              Where fecha >= :Fecha1 And 
                        fecha <= :Fecha2
             ) As Datos
Group By Datos.Cuenta, Datos.Titulo
La identación no aplica solo a los lenguajes de programación mi amigo, una consulta correctamente indentada es mucho más facil de leerpor los demás. Suerte
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 03-04-2007 a las 16:34:28.
Responder Con Cita
  #8  
Antiguo 03-04-2007
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
No se cual será la razón, pero lo cierto es que funciona.

Saludos.
Responder Con Cita
  #9  
Antiguo 03-04-2007
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
Perdón, llevas razón Poliburro.
Saludos y lo siento.
Responder Con Cita
  #10  
Antiguo 10-04-2007
aprendiz2 aprendiz2 is offline
Miembro
 
Registrado: dic 2006
Posts: 70
Poder: 18
aprendiz2 Va por buen camino
Si se puede !

Cita:
Empezado por francisco260184
Hola, soy nuevo en esto del manejo de Delphi, antes programaba todo en VB.Net, pero por razones laborales tuve que migrar.
Mi pregunta es ¿Como se puede hacer un Query de otro Query?

Por ej.
SELECT q.campo1, q.campo2
FROM Query1 AS q;

Se puede o estoy totalmente perdido??
Gracias....
Hola !. Si se puede generar un query basado en los resultados del query anterior.... He encontrado 2 formas de hacerlo:

METODO "A"

1 - Desarrolla la instruccion SQL para el primer Query. Una vez que el primer Query este funcionando bien, guarda el texto de esa SQL en cualquier archivo de texto.

Ejemplo del Query1
Query1
SELECT C1,C2,C3
FROM Tabla1
... otras clausulas siguen...

( Guarda este texto en un archivo de texto simple... puedes usar el mismo editor de Delphi para guardarlo. Ponle el nombre que quieras, con la extension que quieras. Asumimos lo guardaste como "PrimerQuery.txt" )

2 - En el segundo Query, puedes escribir:

SELECT C1, C2, C3
FROM "PrimerQuery.txt"
... otras clausulas normales aqui...


Asi puedes "encadenar" un query con otro.

Puedes usar en el FROM algo asi como
FROM ":WORK:PrimerQuery.txt"

donde :WORK: es el alias que indica la ruta...
o puedes escribir la ruta normalmente: "C:\rutaX\nombre.abc"

Puedes usar la extension que desees, no tiene que ser .txt

OJO: Ya no es necesario llegar a ejecutar el primer Query !!!!
Con solo ejecutar el segundo query, basado en el texto que se guardo en el .txt, es suficiente !!!. ( Se desarrolla el primer query, solo para llegar a probar que funcione bien el texto que se guardara en el .txt )

-------------------

METODO "B"

1 - Desarrolla el primer Query, y coloca un objeto TBatchMove, ademas de un objeto TTable adicional ( digamos Table1 ).

En el TTable selecciona el DataBase ( alias / ruta ) y el nombre de un archivo en el TableName ( aunque no exista la tabla... eso no importa ).

Deja la propiedad Active=false en el Table1

En el TBatchMove,

a) indica que la tabla de salida (prop. Destination) es el Table1 del paso anterior,
b) Cambia la propiedad Mode para que sea batCopy .
c) Cambia la propiedad Source al Query1.

Una vez que hayas ejecutado el Query, echas a andar el BatchMove1 asi:

Query1.close;
Query1.open;
BatchMove1.Execute;

Podras verificar que ahora existe un archivo fisico ( real ) en el disco duro con los resultados del Query1. Tendra el nombre que asignaste en el Table1, en la carpeta referida en el DataBase del Table1.

Ojo: Si esa tabla ya existia en el disco duro, se perdera el contenido anterior.

Puedes cambiar el modo del TBatchMove para obtener diferentes procesos ( Append, Add-Append, etc... ).

Espero te sirva esto.. !!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
Otro metodo de insercion que sea mejor hacerlo via query ilichhernandez Conexión con bases de datos 2 01-07-2006 12:26:06
Como hacer un Query con dbf y Sql Leomar SQL 0 02-02-2005 14:28:52
Copiar los resultados de un Query a otro CORBATIN Conexión con bases de datos 2 13-01-2005 16:32:34
Hacer preguntas en un query IVAND SQL 2 28-11-2003 23:07:18


La franja horaria es GMT +2. Ahora son las 01:14:52.


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
Copyright 1996-2007 Club Delphi