Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2009
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Unir dos TADOQuery en uno solo

Compañeros del Foro.
Espero me puedan ayudar a resolver esta situación, la cual se me ocurrió al tratar de simplificar la programación de la aplicación en Delphi 7.
Resulta que en este momento tengo dos TADOQuery, que seleccionan por medio de SELECT a la misma tabla (MSSQL 2000) cada uno un conjunto diferente de registros, en donde es posible que un mismo registro este en ambos TADOQuery.
Requiero recorrer ambos conjuntos de registros en un orden especifico, para lo cual requeriría ir controlando si el registro del TADOQuery-1 es mayor al registro del TADOQuery-2, para leer entonces el TADOQuery-2 y procesar su información, o viceversa.
Lo que se me ocurrió fue ver si hay la posibilidad de unir ambos conjuntos de registros en uno solo, clasificarlo en el orden requerido e ir procesando solamente un solo conjunto de registros, en lugar de ir procesando dos, controlando la lectura de ambos en el orden necesario.
Por lo tanto, mi duda especifica es: ¿Existe la manera de unir dos conjuntos de registros de dos TADOQuery que tienen la misma estructura en uno solo?
Espero que me haya podido explicar, dado que he batallado para tratar de poner claro mi escenario.
Gracias de antemano a todos por sus respuestas y sugerencias.
Responder Con Cita
  #2  
Antiguo 17-04-2009
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,
Creo que no he acabado de entender lo que pides, porque no haces en una sola consulta las dos condiciones, ahora no se si me explico bien yo, quiero decir que si una consulta es:
Código SQL [-]
SELECT * FROM clientes WHERE plobacion='Albacete'
y la otra es:
Código SQL [-]
SELECT * FROM clientes WHERE poblacion='Murcia'
porque no pones en un sola lo siguiente:
Código SQL [-]
SELECT * FROM clientes WHERE poblacion='Albacete' OR poblacion='Murcia'
Lo ordenas por donde quieras y vas rescatando los datos que te hacen falta, es un ejemplo un poco simple y tal vez yo no he terminado de entender lo que pretendes, espero te sirva de algo, sino es así da un poco más de información, como por ejemplo algo de codigo de esas consultas.
Un saludo.
Responder Con Cita
  #3  
Antiguo 17-04-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola saldanaluis, puedes utilizar un UNION para unir las sentencias SQL que tienes en tus dos AdoQuery.

Esta parte no he entendido, que es lo que exactamente quieres hacer.

Cita:
Empezado por saldanaluis Ver Mensaje
Requiero recorrer ambos conjuntos de registros en un orden especifico, para lo cual requeriría ir controlando si el registro del TADOQuery-1 es mayor al registro del TADOQuery-2, para leer entonces el TADOQuery-2 y procesar su información, o viceversa.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 17-04-2009
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Algo similar a eso sería, solo que el "where" tendría condiciones diferentes: ejemplo
WHERE poblacion = 'Murcia' (TADOQuery-1)
WHERE Tipo_Cliente = 'BASE' (TADOQuery-2)
Como podrás ver, va a haber registros iguales en ambos TADOQuery.
Al hacerlo en un solo TADOQuery, requiero que los clientes de Murcia tipo BASE tengan dos registros, uno por ser de Murcia, y el otro por ser tipo BASE, e identificar cada registro de alguna manera, debido a que si se seleccionó por ser de Murcia, se toman ciertos criterios de evaluación, y si se seleccionó por ser tipo BASE, se toman otros criterios de evaluación. Por eso es que quería saber si ambos conjuntos de registros seleccionados se podían unir en uno solo.
(Creo que no soy bueno para explicar este tipo de situaciones, o no he tenido el contacto suficiente con este foro para aprender a explicar mis requerimientos)
Les agradezco sus sugerencias y respuestas.
Responder Con Cita
  #5  
Antiguo 17-04-2009
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Lo que me refiero al mencionar que requiero recorrer ambos conjuntos de registros en un orden especifico, es que clasifico (SORT) ambos TADOQuery por Vendedor, Tipo_Cliente y Codigo_Cliente. Voy recorriendo ambos TADOQuery pero requiero hacer subtotales por Tipo_Cliente y por Vendedor, por lo que voy avanzando en ambos TADOQuery de acuerdo al orden de clasificación, y poder saber si un cierto cliente estuvo en ambos TADOQuery, saber que ya se recorrieron los registros de cierto Tipo_Cliente en ambos Query y reportar el subtotal por dicho Tipo_Cliente, así mismo por Vendedor.
Voy a tratar de poner en claro mis ideas para poder explicar mejor mi situación.
De cualquier manera agradezco sus sugerencias.
Responder Con Cita
  #6  
Antiguo 17-04-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por saldanaluis Ver Mensaje
se toman ciertos criterios de evaluación, y si se seleccionó por ser tipo BASE, se toman otros criterios de evaluación. Por eso es que quería saber si ambos conjuntos de registros seleccionados se podían unir en uno solo.
Hola de nuevo, si quieres unir, puedes hacerlo con UNION

Código SQL [-]
SELECT * FROM clientes WHERE plobacion='Albacete'
UNION
SELECT * FROM clientes WHERE poblacion='Murcia'

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 17-04-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por saldanaluis Ver Mensaje
Voy a tratar de poner en claro mis ideas para poder explicar mejor mi situación.
Ok, me parece bien, si puedes pones algunos registros de prueba y el resultado que quieres obtener sobre eso, talvez lo que necesites se pueda resolver con una sola consulta, ademas que así entenderemos mejor tu problema.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 17-04-2009
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Un tipo de join que nos ofrece SQL Server y que yo pensaba que era totalmente inutil talvez aplique en tu situación.

¿Haz utilizado el full outer join ?

Con esto, obtendrás ambos universos completitos, pero los registros que están en ambos universos no se verán duplicados.

Espero te sirva porque no se realmente que necesitas.

Saludos.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #9  
Antiguo 18-04-2009
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola de nuevo, si quieres unir, puedes hacerlo con UNION


Código SQL [-]
SELECT * FROM clientes WHERE plobacion='Albacete'
UNION
SELECT * FROM clientes WHERE poblacion='Murcia'





Saluditos
Disculpa, pero esto lo estoy probando en el SQL Query Analyzer y no me reconoce la palabra union entre los dos select. Mi versión de SQL es MSSQL 2000. ¿Pudiera ser eso?
Responder Con Cita
  #10  
Antiguo 18-04-2009
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Cita:
Empezado por saldanaluis Ver Mensaje
Disculpa, pero esto lo estoy probando en el SQL Query Analyzer y no me reconoce la palabra union entre los dos select. Mi versión de SQL es MSSQL 2000. ¿Pudiera ser eso?
Es rarísimo tu caso... ¿puedes poner exactamente el mismo código que te está generando el error?

El union si lo acepta el SQL Server 2000
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #11  
Antiguo 21-04-2009
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Así es. En efecto. Ya me lo tomó. Lo que pasa es que yo tenía un 'ORDER BY' en el primer 'SELECT' antes del 'UNION'. Lo quité y puse el 'ORDER BY' al final de todo, y si me lo toma.
Está más o menos asi:
SELECT X,Y,Z FROM TBL
WHERE Y....
UNION
SELECT X,Y,Z FROM TBL
WHERE Z....
ORDER BY Z,X

Gracias a todos por sus respuestas. Han sido de gran utilidad. No hay duda de que aqui en el foro hay gente con amplio conocimiento de muchos temas, y que están dispuestos a compartirlo con personas como uno que tiene muchas preguntas.

Los voy a seguir molestando con mis preguntas.

Saludos...
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
TADOQuery bastian Conexión con bases de datos 1 27-02-2009 18:17:14
unir varios report en uno solo Eusebio Impresión 0 02-02-2006 12:37:48
ayuda con TADOQUERY az_jazo SQL 1 15-09-2005 23:37:40
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 12:33:19
¿Unir documentos de word en uno solo? Firibiri Servers 0 31-10-2003 18:24:18


La franja horaria es GMT +2. Ahora son las 05:43:40.


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