Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Resultado de dos consultas en un Grid (https://www.clubdelphi.com/foros/showthread.php?t=78405)

amerika111 17-04-2012 01:52:11

Resultado de dos consultas en un Grid
 
hola buenas tardes:
quisiera saber si hay manera de colocar el resultado de dos consultas en un solo grid, o si hay forma de realizar una consulta una dos tablas.

Código SQL [-]
select * from HIST_MOVS movs where movs.id_ent=1 and movs.id_cta=1 order by ult_act asc 
select * from SUPLEMENTOS supl where supl.id_ent=1 and supl.id_cta=1 order by ult_act asc

las tablas casi tienen los mismos campos excepto que la tabla suplementos trae un campo extra llamado rango.

roman 17-04-2012 02:09:13

Si la dos tablas tuvieran los mismos campos podrías usar una unión

Código SQL [-]
select * from HIST_MOVS movs where movs.id_ent=1 and movs.id_cta=1 

union

select * from SUPLEMENTOS supl where supl.id_ent=1 and supl.id_cta=1

order by ult_act as /* el order by aplicaría a ambas tablas */

Ahora bien, si sólo es un campo puedes "suplirlo" en la otra tabla:

Código SQL [-]
select *, "no asignado" rango from HIST_MOVS movs where movs.id_ent=1 and movs.id_cta=1 

union

select * from SUPLEMENTOS supl where supl.id_ent=1 and supl.id_cta=1

order by ult_act as /* el order by aplicaría a ambas tablas */

suponiendo, claro, que es un campo CHAR y que la tabla suplemntos lo tiene al final. En otro caso, tendrías que suplir el valor por defecto que corresponda al tipo de datos del campo en la tabla suplementos. Y si el campo está en otra posición tendrás que listar todos los campos de cada tabala e intercalar en la primera tabla el campo faltante.

// Saludos

amerika111 17-04-2012 02:22:16

ok gracias si utilice un union all y segui tu consejo de suplir los campos de la otra tabla..

ahora nose como realizarle aqui..

tengo ya el resultado pero un campo aparece con numeros como estos
73
60
45

y estos estan relacionados en otra tabla donde cada numero tiene su descripcion ahora bien como le podria hacer para que en lugar que apareciera el numero apareciese la descripcion. podria usar el inner join con la otra tabla utilizando la que resulto del union all

roman 17-04-2012 02:26:03

Mmm. No estoy seguro, pero creo que deberías hacer el join en cada tabla:

Código SQL [-]
select ...
from ...
inner join ...

union

select ...
from ...
inner join ...

// Saludos

amerika111 17-04-2012 03:23:06

mmm lo hice afuera pero nose si sea lo optimo o la forma correcta
Código SQL [-]

SELECT movs.id,movs.id,movs.id_per,per.clave,movs.id_ent,movs.id_cta,movs.motivo,movs.tipoMovs,movs.montoIn  icial,movs.montoFinal,movs.usr,movs.ult_act FROM FMPR_PER per 
INNER JOIN 
    (SELECT id,id_lib,id_per,id_ent,id_cta,'' AS motivo,tipoMovs,montoInicial,montoFinal,usr,ult_act 
        FROM FMPR_HIST_MOVS movs WHERE movs.id_ent=1 and movs.id_cta=1  
        union all
            SELECT id,id_lib,id_per,id_ent,id_cta,motivo,tipoMovs,monto as montoInicial,'' AS montoF,usr,ult_act 
                FROM FMPR_SUPLEMENTOS supl where supl.id_ent=1 and supl.id_cta=1) as Movs
ON per.id=movs.id_per and per.clave='ene2011'


La franja horaria es GMT +2. Ahora son las 15:08:38.

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