Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ayuda a pasar campos de dos tablas a una (https://www.clubdelphi.com/foros/showthread.php?t=25296)

ddd_ddd 19-09-2005 03:07:07

ayuda a pasar campos de dos tablas a una
 
tengo dos tablas, graficamente seria:


pagos_normales:

clavediaspago11100121002210022100

pagos_extras
clavediaspago12100121002110021100



lo que quiero es pasar a otra tabla los totales de lo que se les pago solo el dia 2 pero separar pago extra del pago normal. graficamente quedaria:

clavetotal_normaltotal_extratotal11002003002200200


uso delphi y mysql

MasterXP 19-09-2005 05:00:52

pos yo no entiendo muy bien lo que quisiste dibujar (no se entiende).

pero si lo que quieres es llenar una tabla con la suma de otros es bien sencillo:

Código SQL [-]
 size="2"> INSERT INTO TablaFinal  (campo1, campo2, ..., campoN) 
 SELECT SUM(TablaOrigen.campo) FROM TablaOrigen

ddd_ddd 19-09-2005 05:25:02

perdon por no haberlo puesto bien
 
lo que pasa es que si se usar eso. el problema es que en la nueva tabla debe de ir la clave, el total que se paga en horas normales, el total que se paga de extras y la suma de normales y extras pero solo del dia 2.

ahora si graficamente seria:

pagos_normales:
clave....dias...pago
1.........2.......100
1.........3.......100
2.........2.......100
2.........2.......100
3.........2.......100


pagos_extras:
clave....dias...pago
1.........2.......100
1.........2.......100
2.........1.......100
2.........2.......100
3.........1.......100



tabla_resultante:
pagos_normales:
clave....pago_normal....pago_extra...total
1.............100...............200..........300
2.............200...............100..........300
3.............100................0............100

vtdeleon 19-09-2005 07:16:57

Saludos

Esto no lo he probado, lo hice en un ratito
Código SQL [-]
/*Siendo pn->Pagos_Normales, pe->Pagos_Extra*/
insert into Resultadopagosnormales(clave,pago_normales,pago_extra,total)
(select pn.clave, sum(pn.pago),sum(pe.pago),(sum(pn.pago)+sum(pe.pago)) total
from pn,pe
where pn.clave=pe.clave and pn.dias=2 and pe.dias=2
group by pn.clave,pe.clave)
Puede ser que se me escape algo:p
Suerte

ddd_ddd 19-09-2005 18:16:21

esta correcto pero........
 
esta bien tu codigo, ya lo habia hecho, pero EXISTE UN PROBLEMA MAYOR, supongamos que la clave tres esta en la tabla de pagos_normales pero no lo esta en pagos_extras
con la sentencia where que pones la tabla resultante seria

tabla_resultante:
clave....pago_normal....pago_extra...total
1.............100...............200..........300
2.............200...............100..........300

pero lo correcto seria:

tabla_resultante:

clave....pago_normal....pago_extra...total
1.............100...............200..........300
2.............200...............100..........300
3.............100................0............100

el problema supongo que esta en:
where pn.clave=pe.clave and pn.dias=2 and pe.dias=2
group by pn.clave,pe.clave

estaria muy agradecido de que me pudieras ayudar

vtdeleon 19-09-2005 18:27:16

Saludos

Pues usa Left o Right Join dependiendo del caso
Código SQL [-]
/*Siendo pn->Pagos_Normales, pe->Pagos_Extra*/
insert into Resultadopagosnormales(clave,pago_normales,pago_extra,total)
(select pn.clave, sum(pn.pago),sum(pe.pago),(sum(pn.pago)+sum(pe.pago)) total
from pn
left join pe on pn.clave=pe.clave /*o Right Join*/
where pn.dias=2 and pe.dias=2
group by pn.clave,pe.clave)

ddd_ddd 21-09-2005 17:47:58

no funciona la consulta muy bien
 
utilizo el full join y seria asi:

Código SQL [-]
 insert into Resultadopagosnormales(clave,pago_normales,pago_extra,total)
 (select pn.clave, sum(pn.pago),sum(pe.pago),(sum(pn.pago)+sum(pe.pago)) total
 from pn
 full join pe on pn.clave=pe.clave
 where pn.dias=2 or pe.dias=2
 group by pn.clave,pe.clave)
si funciona pero no inserta la suma de pn.pago+pe.pago en el total

vtdeleon 22-09-2005 06:15:42

Saludos

Da algun error de sintaxis o algo :confuced:
Prueba esta consulta:
Código SQL [-]
select pn.clave, sum(pn.pago),sum(pe.pago),(sum(pn.pago)+sum(pe.pago))
from pn
full join pe on pn.clave=pe.clave
where pn.dias=2 or pe.dias=2
group by pn.clave,pe.clave
Si sale todos los datos, la consulta esta bien.
Prueba

ddd_ddd 23-09-2005 05:51:08

perdon .. .. . . pero
 
perdon por haber puesto otro hilo, lo que pasa es que como crei que lo del full join era otro tema a tratar puse el otro hilo....
pido una disculpa y gracias.....


y con referencia a la consulta anterior es lo mismo, si la clave no existe en cualquiera de las 2 tablas no pone la suma total,

intente con left join y right join pero es el mismo problema....
espero que me puedan ayudar....... gracias


La franja horaria es GMT +2. Ahora son las 08:39:21.

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