PDA

Ver la Versión Completa : ayuda a pasar campos de dos tablas a una


ddd_ddd
19-09-2005, 03:07:07
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:


INSERT INTO TablaFinal (campo1, campo2, ..., campoN)
SELECT SUM(TablaOrigen.campo) FROM TablaOrigen

ddd_ddd
19-09-2005, 05:25:02
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
/*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 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
/*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
utilizo el full join y seria asi:


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: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.claveSi sale todos los datos, la consulta esta bien.
Prueba

ddd_ddd
23-09-2005, 05:51:08
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