🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
5 messages
5 total messages Started by gato2006chile Thu, 03 May 2007 00:30
MySQL y actualizacion dependiente de un campo
#1001
Author: gato2006chile
Date: Thu, 03 May 2007 00:30
34 lines
2000 bytes
Necesito actualizar los campos de una tabla que son dependiente de un 
valor de un campo que tambien es actualizado, como lo puedo hacer?

En otras palabras,� como puedo definir una variable que almacene el 
valor de un campo de una tabla, cuyos registros se estan actualizando, 
con varios campos dependientes de los valores del campo a almacenar?.

Se que existen tablas con nombre OLD y NEW,(inserted y deleted en 
MSSQL), que almacenan los valores previos, pero me parece que solo estan 
disponibles en triggers.

Unidades=10
Costo =900,((900/10)*10),(90x10)

Si actualizo en ese mismo orden
Unidades=5
El costo por unidad en vez de ser 90  resulta 180, ya que considera la 
cantidad nueva de 5, no la previa de 10, total 900

Costo=(CostoTotalPrevio/UnidadPreviaAct)*UnidadesAct=900,((900/5)*5),(180*5)

Si actualizo en el orden
Costo=(900/10)*5=450
Unidades=5
El valor resulta correcto


   "update manejo set " _
& "costo=(costo/cantidad) * " & Format(Med.aplicaM) & ", " _
& "cantidad = " & Format(Med.aplicaM) & " " _
.
.
.
.
Re: MySQL y actualizacion dependiente de un campo
#1002
Author: Jos� Miguel Santib��ez
Date: Thu, 03 May 2007 00:32
32 lines
2573 bytes
En el cap�tulo anterior (news:f1asdt$2gt$1@news.nivel5.cl),
gato2006chile <gato2006chileSINESTO@gmail.com> dijo: 

> Necesito actualizar los campos de una tabla que son dependiente de un 
> valor de un campo que tambien es actualizado, como lo puedo hacer?

normalizando???

(sorry, no pude resistirlo ;-) )

> En otras palabras,� como puedo definir una variable que almacene el 
> valor de un campo de una tabla, cuyos registros se estan actualizando,
> con varios campos dependientes de los valores del campo a almacenar?.

Debo se�alar que no entend� mucho lo que quieres hacer, pero si m�s de un 
campo, depende del campo que vas a actualizar, actualiza ese campo y luego 
ejecutas un SQL que actualice los dem�s valores:

Paso 1: actualizas cada uno de los costos unitarios:
update tabla set costo_unitario=10 where producto=111;
update tabla set costo_unitario=8 where producto=112;
update tabla set costo_unitario=15 where producto=113;

paso 2: actualizas el costo total en funci�n del costo unitario
update tabla set costo_total = costo_unitario * cantidad;

�era eso?
(si la versi�n acepta transacciones, todo dentro de un transaction/commit)
-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Re: MySQL y actualizacion dependiente de un campo
#1004
Author: Jos� Miguel Santib��ez
Date: Thu, 03 May 2007 01:18
55 lines
3602 bytes
En el cap�tulo anterior (news:f1avpb$3kv$1@news.nivel5.cl),
gato2006chile <gato2006chileSINESTO@gmail.com> dijo: 

> En esencia es un problema de Insumo e insumosVendidos.
> Cada insumo tiene un costo que puede variar y un insumo vendido tiene
> un registro que incluye el numero de unidades vendidas y el costo
> total de dichas unidades.
> 
> Si se tienen por ejemplo 5 unidades vendidas y se aumentan a 7 basta 
> solo multiplicar 2 * costoactual y agregarselo al costo de insumo
> vendido. 
> 
> El problema esta cuando se tiene 5 unidades y se reduce a 3.
> Si la actualizaci�n es de inmediato no habr�a problema, pero que
> sucede si se produce despu�s de una actualizaci�n del precio de un
> producto, existir�an inconsistencias de precios, por lo cual se usa el
> costo por unidad igual a el "valor pagado/unidades vendidas" al
> momento de la actualizaci�n.
> 
> En mysql si actualizo en este orden
> 
> Unidades=Nuevo valor
> CostoTotal=(Costo total previo/Unidades previas)*(Nuevo valor de
> unidades)) 
> 
> Unidades previas toma el nuevo valor, siendo que debiera tener el
> valor previo.
> 
> Si actualizo CostoTotal y despues Unidades, el valor por unidad es el 
> correcto.
> 
> Mi problema es como lo haria si fueran dos o mas valores de los cuales
> dependen un conjunto de campos.

Hmmm.. ley�ndolo, creo que la normalizaci�n no es tan mala idea...

En ese caso, habr�a bastado tener: costo_unitario al momento de la venta y 
cantidad... Si cambia la cantidad da lo mismo... si cambia el costo 
unitario posteriormente, tambi�n...
Y si se quiere sacar un total vendido: select sum(costo_unitario*cantidad) 
resuelve todo el problema...

O incluso, para una desnormalizaci�n consistente, creas un tercer campo: 
costo_total que se actualiza con un "update tabla set costo_total = 
costo_unitario*cantidad"...

O, en el peor de los casos y siguiendo la idea anterior, creas un nuevo 
campo: costo_unitario y lo calculas con "update tabla set costo_unitario = 
costo_total / cantidad" y eso te va a solucionar todos los problemas 
posteriores...

-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Re: MySQL y actualizacion dependiente de un campo
#1003
Author: gato2006chile
Date: Thu, 03 May 2007 01:27
58 lines
3529 bytes
En esencia es un problema de Insumo e insumosVendidos.
Cada insumo tiene un costo que puede variar y un insumo vendido tiene un 
registro que incluye el numero de unidades vendidas y el costo total de 
dichas unidades.

Si se tienen por ejemplo 5 unidades vendidas y se aumentan a 7 basta 
solo multiplicar 2 * costoactual y agregarselo al costo de insumo vendido.

El problema esta cuando se tiene 5 unidades y se reduce a 3.
Si la actualizaci�n es de inmediato no habr�a problema, pero que sucede 
si se produce despu�s de una actualizaci�n del precio de un producto, 
existir�an inconsistencias de precios, por lo cual se usa el costo por 
unidad igual a el "valor pagado/unidades vendidas" al momento de la 
actualizaci�n.

En mysql si actualizo en este orden

Unidades=Nuevo valor
CostoTotal=(Costo total previo/Unidades previas)*(Nuevo valor de unidades))

Unidades previas toma el nuevo valor, siendo que debiera tener el valor 
previo.

Si actualizo CostoTotal y despues Unidades, el valor por unidad es el 
correcto.

Mi problema es como lo haria si fueran dos o mas valores de los cuales 
dependen un conjunto de campos.

Jos� Miguel Santib��ez escribi�:
> En el cap�tulo anterior (news:f1asdt$2gt$1@news.nivel5.cl),
> gato2006chile <gato2006chileSINESTO@gmail.com> dijo: 
> 
>> Necesito actualizar los campos de una tabla que son dependiente de un 
>> valor de un campo que tambien es actualizado, como lo puedo hacer?
> 
> normalizando???
> 
> (sorry, no pude resistirlo ;-) )
> 
>> En otras palabras,� como puedo definir una variable que almacene el 
>> valor de un campo de una tabla, cuyos registros se estan actualizando,
>> con varios campos dependientes de los valores del campo a almacenar?.
> 
> Debo se�alar que no entend� mucho lo que quieres hacer, pero si m�s de un 
> campo, depende del campo que vas a actualizar, actualiza ese campo y luego 
> ejecutas un SQL que actualice los dem�s valores:
> 
> Paso 1: actualizas cada uno de los costos unitarios:
> update tabla set costo_unitario=10 where producto=111;
> update tabla set costo_unitario=8 where producto=112;
> update tabla set costo_unitario=15 where producto=113;
> 
> paso 2: actualizas el costo total en funci�n del costo unitario
> update tabla set costo_total = costo_unitario * cantidad;
> 
> �era eso?
> (si la versi�n acepta transacciones, todo dentro de un transaction/commit)
Re: MySQL y actualizacion dependiente de un campo
#1005
Author: gato2006chile
Date: Thu, 03 May 2007 03:25
68 lines
3892 bytes
Gracias por haber respondido, exactamente eso es.
Con lo anterior que postearon, me di cuenta de ese detalle.

Basta almacenar el costo de venta al momento de la misma en las unidades 
vendidas.

Me enrede por querer mantener solo un grupo de venta por insumo.

En resumen lo dejo de la siguiente manera:

Si los costos son iguales(insumos y vendidos) se altera solo la 
cantidad, si difieren se agrega un nuevo insumo vendido al precio actual.

Por suerte no tendre que modificar mucho c�digo.


Jos� Miguel Santib��ez escribi�:
> En el cap�tulo anterior (news:f1avpb$3kv$1@news.nivel5.cl),
> gato2006chile <gato2006chileSINESTO@gmail.com> dijo: 
> 
>> En esencia es un problema de Insumo e insumosVendidos.
>> Cada insumo tiene un costo que puede variar y un insumo vendido tiene
>> un registro que incluye el numero de unidades vendidas y el costo
>> total de dichas unidades.
>>
>> Si se tienen por ejemplo 5 unidades vendidas y se aumentan a 7 basta 
>> solo multiplicar 2 * costoactual y agregarselo al costo de insumo
>> vendido. 
>>
>> El problema esta cuando se tiene 5 unidades y se reduce a 3.
>> Si la actualizaci�n es de inmediato no habr�a problema, pero que
>> sucede si se produce despu�s de una actualizaci�n del precio de un
>> producto, existir�an inconsistencias de precios, por lo cual se usa el
>> costo por unidad igual a el "valor pagado/unidades vendidas" al
>> momento de la actualizaci�n.
>>
>> En mysql si actualizo en este orden
>>
>> Unidades=Nuevo valor
>> CostoTotal=(Costo total previo/Unidades previas)*(Nuevo valor de
>> unidades)) 
>>
>> Unidades previas toma el nuevo valor, siendo que debiera tener el
>> valor previo.
>>
>> Si actualizo CostoTotal y despues Unidades, el valor por unidad es el 
>> correcto.
>>
>> Mi problema es como lo haria si fueran dos o mas valores de los cuales
>> dependen un conjunto de campos.
> 
> Hmmm.. ley�ndolo, creo que la normalizaci�n no es tan mala idea...
> 
> En ese caso, habr�a bastado tener: costo_unitario al momento de la venta y 
> cantidad... Si cambia la cantidad da lo mismo... si cambia el costo 
> unitario posteriormente, tambi�n...
> Y si se quiere sacar un total vendido: select sum(costo_unitario*cantidad) 
> resuelve todo el problema...
> 
> O incluso, para una desnormalizaci�n consistente, creas un tercer campo: 
> costo_total que se actualiza con un "update tabla set costo_total = 
> costo_unitario*cantidad"...
> 
> O, en el peor de los casos y siguiendo la idea anterior, creas un nuevo 
> campo: costo_unitario y lo calculas con "update tabla set costo_unitario = 
> costo_total / cantidad" y eso te va a solucionar todos los problemas 
> posteriores...
> 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads