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

update select??

Estas en el tema de update select?? en el foro de Mysql en Foros del Web. Hola, tengo un problema y es que quiero actualizar un dato de un campo en especifico, espero que no tenga mal mi planteamiento, aqui va: ...
  #1 (permalink)  
Antiguo 10/02/2009, 13:23
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
update select??

Hola, tengo un problema y es que quiero actualizar un dato de un campo en especifico, espero que no tenga mal mi planteamiento, aqui va:

Tengo una tabla de compras, y una de inventario, si tengo:
Id === Nombre ======Unidades
1 === calcetines XD === 9

Y compro 14 mas, ingreso la compra en la tabla "compras" y que a la misma vez se sume a Inventario, lo que he estado haciendo hasta ahorita con PHP ha sido que primero hago tomo haciendo "select Unidades from inventario where Id='1'", y luego "update inventario set Unidades='$unidades+$compra' where Id='1'", hay otra manera de hacerlo con una sola conuslta???
  #2 (permalink)  
Antiguo 10/02/2009, 13:33
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: update select??

Pues lo podrias hacer asi:
Código:
UPDATE inventario 
SET Unidades=(
  SELECT Unidades from inventario where Id='1'
  ) + $compra 
WHERE Id='1'
Saludos.
__________________
La inteligencia viene detras de mi, pero yo corro mas que ella.

Última edición por Taldreakan; 10/02/2009 a las 13:39
  #3 (permalink)  
Antiguo 10/02/2009, 14:40
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
Respuesta: update select??

Si se usa una sentencia UPDATE multitabla que afecte a tablas InnoDB para las que haya definiciones de claves foráneas, el optimizador MySQL procesará las tablas en un orden diferente del de la relación padre/hijo. En ese caso, la sentencia puede fallar y deshará los cambios (roll back). En su lugar, se debe actualizar una tabla y confiar el las capacidades de ON UPDATE que proporciona InnoDB que harán que las otras tablas se modifiquen del modo adecuado.

Actualmente, no se puede actualizar una tabla y seleccionar desde la misma en una subconsulta.
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:35.