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
Author: gato2006chile
Date: Thu, 03 May 2007 00:30
Date: Thu, 03 May 2007 00:30
34 lines
2000 bytes
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
Author: Jos� Miguel Santib��ez
Date: Thu, 03 May 2007 00:32
Date: Thu, 03 May 2007 00:32
32 lines
2573 bytes
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
Author: Jos� Miguel Santib��ez
Date: Thu, 03 May 2007 01:18
Date: Thu, 03 May 2007 01:18
55 lines
3602 bytes
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
Author: gato2006chile
Date: Thu, 03 May 2007 01:27
Date: Thu, 03 May 2007 01:27
58 lines
3529 bytes
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
Author: gato2006chile
Date: Thu, 03 May 2007 03:25
Date: Thu, 03 May 2007 03:25
68 lines
3892 bytes
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