Sumar un atributo de otra tabla

17/02/2004 - 03:34 por Fernando | Informe spam
Hola grupo, tengo dos tablas : PedGral
PedDetalle
-

CodArti(PK)
CodArti(PK)
CantTotal
Fila

Columna

Cantidad

Tengo que sumar la cantidad de cada articulo de PedDetalle y asignarlo al
articulo correspondiente en el atributo CantTotal de la PedGral. En teoria y
si no me equivoco eso seria algo asi :

UPDATE PedGral SET CantTotal = (Select sum(det.Cantidad) FROM PedDetalle det
WHERE PedGral.CodArti det.CodArti)
FROM PedDetalle det, PedGral
WHERE PedGral.CodArti = det.CodArti

Pero como tendria que hacer para poder corroborrar los datos que esten bien,
es decir, quisiera generar un script que me permita verificar los datos
antes de ejecutar el Update anterior ya que son miles de registros y se me
hace imposible mirarlos uno por uno.
Gracias de antemano
Saludos
Fernando

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
17/02/2004 - 03:45 | Informe spam
Hola, el update no esta mal, si queres verificarlo luego podrias hacer:

Select ped_gral.codarti,ped_gral.cant_total,sum(ped_deralle.det_cantidad)
inner join peddetalle on
peddetalle.codarti = pedgral.codarti
group by ped_gral.codarti,ped_gral.cant_total
having sum(ped_deralle.det_cantidad) <> ped_gral.cant_total

Salu2



UPDATE PedGral SET CantTotal = (Select sum(det.Cantidad) FROM PedDetalle det
WHERE PedGral.CodArti > det.CodArti)
FROM PedDetalle det, PedGral
WHERE PedGral.CodArti = det.CodArti



Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
"Fernando" escribió en el mensaje
news:
Hola grupo, tengo dos tablas : PedGral
PedDetalle
-

CodArti(PK)
CodArti(PK)
CantTotal
Fila

Columna

Cantidad

Tengo que sumar la cantidad de cada articulo de PedDetalle y asignarlo al
articulo correspondiente en el atributo CantTotal de la PedGral. En teoria


y
si no me equivoco eso seria algo asi :

UPDATE PedGral SET CantTotal = (Select sum(det.Cantidad) FROM PedDetalle


det
WHERE PedGral.CodArti > det.CodArti)
FROM PedDetalle det, PedGral
WHERE PedGral.CodArti = det.CodArti

Pero como tendria que hacer para poder corroborrar los datos que esten


bien,
es decir, quisiera generar un script que me permita verificar los datos
antes de ejecutar el Update anterior ya que son miles de registros y se me
hace imposible mirarlos uno por uno.
Gracias de antemano
Saludos
Fernando


Respuesta Responder a este mensaje
#2 Javier Loria
17/02/2004 - 15:25 | Informe spam
Hola Fernando:
Si no te importa que no sea ANSI, podrias usar:
==UPDATE PedGral
SET CantTotal=Total.NuevoTotal
FROM PedGral
JOIN (SELECT det.CodArti
, SUM(det.Cantidad) AS NuevoTotal
FROM PedDetalle
GROUP BY det.CodArti) AS Total
ON PedGral.CodArti=Total.CodArti
== La ventaja de est UPDATE es que facilmente puedes comprobar los valores,
reemplazando con SELECT * la parte inicial (UPDATE ... SET ...).
Si esto no te sirve podrias: iniciar una transaccion (BEGIN TRAN); hacer
la actualizacion (el UPDATE); y revisar como quedas los datos con un SELECT;
si estan correctos haces COMMIT si no hacer ROLLBACK.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Fernando escribio:
Hola grupo, tengo dos tablas : PedGral
PedDetalle
-

CodArti(PK)
CodArti(PK)
CantTotal
Fila

Columna

Cantidad

Tengo que sumar la cantidad de cada articulo de PedDetalle y
asignarlo al articulo correspondiente en el atributo CantTotal de la
PedGral. En teoria y si no me equivoco eso seria algo asi :

UPDATE PedGral SET CantTotal = (Select sum(det.Cantidad) FROM
PedDetalle det WHERE PedGral.CodArti > det.CodArti)
FROM PedDetalle det, PedGral
WHERE PedGral.CodArti = det.CodArti

Pero como tendria que hacer para poder corroborrar los datos que
esten bien, es decir, quisiera generar un script que me permita
verificar los datos antes de ejecutar el Update anterior ya que son
miles de registros y se me hace imposible mirarlos uno por uno.
Gracias de antemano
Saludos
Fernando
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida