Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Actualizar stock según venta

Estas en el tema de Actualizar stock según venta en el foro de Mysql en Foros del Web. Hola amigos del foro. Tengo 2 tablas Articulos y Ventas. Necesito hacer una busqueda en la tabla ventas segun el codigo y la factura y ...
  #1 (permalink)  
Antiguo 19/07/2011, 10:26
Avatar de arielenter  
Fecha de Ingreso: abril-2009
Mensajes: 75
Antigüedad: 15 años
Puntos: 2
Pregunta Actualizar stock según venta

Hola amigos del foro. Tengo 2 tablas Articulos y Ventas. Necesito hacer una busqueda en la tabla ventas segun el codigo y la factura y actualizar la tabla articulos segun el codigo. tengo este pero no me funciona.

Código:
-

UPDATE articulos SET articulos.stock=(SELECT articulos.stock-ventas.cantidad
FROM articulos INNER JOIN ventas ON articulos.codigo = ventas.codarticulo
WHERE ventas.nfactura=1 AND ventas.codarticulo=1) WHERE articulos.codigo=1

-
  #2 (permalink)  
Antiguo 19/07/2011, 10:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Actualizar stock según venta

No puedes leer y actualizar la tabla al mismo tiempo. MySQL no te lo permitirá por riesgo de inconsistencias.
Simplifica la tarea:
Código MySQL:
Ver original
  1. UPDATE articulos A INNER JOIN ventas V ON A.codigo = V.codarticulo
  2. SET A.stock= (A.stock-V.cantidad)
  3.     V.nfactura = 1
  4.     AND
  5.     V.codarticulo = 1;
No pongo la condición A.codigo=1 porque resulta redundante cuando usas INNER JOIN, al ser A.codigo = V.codarticulo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/07/2011, 11:06
Avatar de arielenter  
Fecha de Ingreso: abril-2009
Mensajes: 75
Antigüedad: 15 años
Puntos: 2
Respuesta: Actualizar stock según venta

Funciona perfecto, muchas gracias amigo. este método resulta no va ser lento a medida que va creciendo la Bd.

Etiquetas: innerjoin, select, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:15.