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

[SOLUCIONADO] Se puede hacer UPDATE de un SELECT ??

Estas en el tema de Se puede hacer UPDATE de un SELECT ?? en el foro de Mysql en Foros del Web. Ya logre hacer el insertar de un select Hace unos días me he topado con un problema, el insert del link funciona perfecto pero hoy ...
  #1 (permalink)  
Antiguo 19/09/2013, 18:40
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Se puede hacer UPDATE de un SELECT ??

Ya logre hacer el insertar de un select

Hace unos días me he topado con un problema, el insert del link funciona perfecto pero hoy quiero hacer un UPDATE de la misma tabla ventas hacia una tabla llamada productos, la cosa es que quiero rehacer mi botón cancelar del carrito de ventas; cuando eso pase (cancelar la venta) se tendrá que aumentar la cantidad del inventario y reducir la cantidad de las ventas de ese producto que ha diferencia de el tema anterior que solo se insertaba en una tabla !!!

Intente muchas formas y me quede con las siguientes consultas sin tener éxito:

Código MySQL:
Ver original
  1. update productos set stock=stock+cant, ventas=ventas-cant
  2. SELECT v.cod , v.cant as cant from venta v
  3. WHERE productos.id = v.cod

Si se fijan en stock sumo "cant" y resto lo mismo "cant" al campo ventas que viene del select que es ahi donde creo que esta mi primer error y creo que el segundo error es el WHERE donde digo que el id del producto (productos.id) es igual a v.cod (en efecto v.cod es el id del producto)


Código MySQL:
Ver original
  1. update productos set stock=stock+cant, ventas=ventas-cant
  2. SELECT p.cod , v.cant from venta v
  3. INNER JOIN productos p on v.cod = p.id

Aca hago un inner join como lo aconseja el buen amigo gnzsoloyo pero aun no funciona

Sera que me ayudan a encontrar el camino correcto de lo que necesito

Intente en este tuto pero nada

Una duda mas, el tema de insertar un select ya lo marcaron como solucionado, podia comentar mi duda en ese tema o esta bien crear un tema por cada duda ?? en lo personal prefiero poner varias dudas en un mismo tema !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #2 (permalink)  
Antiguo 20/09/2013, 03:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Se puede hacer UPDATE de un SELECT ??

Para que quieres hacer update, no es necesario. La información ya esta en la base de datos


1. Esto da las cantidades vendidas por productos
Código MySQL:
Ver original
  1. SELECT v.cod , sum(v.cant) cant_venta
  2. FROM venta v
  3. GROUP BY v.cod

2. Deberías tener compras en alguna parte

Código MySQL:
Ver original
  1. SELECT c.cod , sum(c.cant) cant_com
  2. FROM compras c
  3. GROUP BY c.cod

3. Luego creas una vista (21.2. Sintaxis de CREATE VIEW)

Código MySQL:
Ver original
  1. CREATE VIEW stocks AS
  2. SELECT p.cod,
  3.              IFNULL(sbcC.cant_com,0)-IFNULL(sbcV.cant_venta,0) stock
  4. FROM  (productos p
  5.                     LEFT JOIN
  6.                          (SELECT v.cod ,
  7.                                        sum(v.cant) cant_venta
  8.                           FROM venta v
  9.                           GROUP BY v.cod) sbcV)
  10.                     ON p.cod=sbcV.cod)
  11.                     LEFT JOIN
  12.                          (SELECT c.cod,
  13.                                        sum(c.cant) cant_com
  14.                            FROM compras c
  15.                            GROUP BY c.cod) sbvC
  16.                     ON p.cod=sbcC.cod;

Esto es el stock NO es necesario que hagas ningún UPDATE. Tendras la vista "stocks" siempre actualizada sin hacer nada.

Las vistas se pueden cansultar igual que una tabla normal....

p.e.

Código MySQL:
Ver original
  1. SELECT cod,stock
  2. FROM stocks
  3. WHERE cod=25;

Esto te da el stock actual del producto 25.

Debes preocuparte de guardar las ventas y las compras .... el stock de unidades se calcula solo.

Se puede sofisticar con un campo para la cantidad inicial de producto en la tabla producto y solo actualizar esa cantidad al inició del ejercicio y luego definir la vista de manera que tenga en cuenta la cantidad inicial y las compras y ventas del ejercicio.

(Ojo, con el tema contable y los precios de compra y venta)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 20/09/2013 a las 03:17
  #3 (permalink)  
Antiguo 20/09/2013, 18:55
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Se puede hacer UPDATE de un SELECT ??

Valla creare el modulo de compras ya que aun no lo tengo (se que es importante) porq el cliente me pidio agregar productos al stock nada mas, asi que hay una opcion de agregar productos con update : (ojo no es la query real, es solo ejemplo)
Código MySQL:
Ver original
  1. Update productos set stock = stock + '$cantidad_nueva' // Con esto se agrega producto al inventario

Por lo que quiero hacer el update es porq cuando el cajero hace click en mas o en menos cantidad (ver imagen) se hace un update instantaneo a la tabla productos no solo a la tabla ventas, eso significa que el inventario (de la tabla productos) se actualiza al segundo, fijese que en el data list del nombre del producto ahi aparece la existencia real, y eso cuando da click ya esta actualizado para cualquier cajero



Ahi hace falta el boton cancelar que quiero poner, para que al cancelar la venta esas cantidades que hay ahi se le sumen al inventario de productos y se le resten al campo ventas (que ese campo es solo para ver los productos mas y menos vendidos)

PD: su respuesta quim la he estudiado desde que la puso pero aun no la entiendo en su totalidad
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #4 (permalink)  
Antiguo 22/09/2013, 17:15
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Se puede hacer UPDATE de un SELECT ??

Bump !!! Nadie podria darme una ayudadita o consejo ???
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #5 (permalink)  
Antiguo 22/09/2013, 17:40
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, 4 meses
Puntos: 2658
Respuesta: Se puede hacer UPDATE de un SELECT ??

¿Sobre qué parte? ¿La base de datos, las consultas y lo que hay que hacer, o sobre botones, vistas y combos...?
Lo primero es BBDD, pero lo segundo es OFF-TOPIC de los foros de Bases de Datos. Sería tema de programación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 22/09/2013, 17:55
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Se puede hacer UPDATE de un SELECT ??

Ya lo arregle !! igual tuve que cambiar la logica de programacion y adecuarla a mi necesidad !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: campo, insert, join, select, sql, tabla, 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 08:28.