PDA

Ver la Versión Completa : Actualizar existencia de productos e insertar nuevos si no se encuentran


ctronx
16-10-2004, 02:06:47
Saludos, Uso delphi 7 y mysql 4.0 con los componentes zeos.
Mi problema es el siguiente:
Tengo una tabla de productos y voy a actualizar su existencia en base a un dbgrid que que contiene otrosproductos, lo hago con un simple update de la siguiente manera:

update productos set exis=exis+otrosproductos.cant where idproducto=otrosproductos.idproducto

funciona bien, pero

¿Como le hago para que los productos que no encuentre en la tabla productos los inserte en esa tabla (productos)?

O sea los que esten en la tabla otrosproductos y en la tabla productos solo sea actualizada su existencia, Y los que esten en la tabla otrosproductos pero NO en la tabla productos sean agregados a ella.

Gracias por la ayuda que puedan brindarme.

kayetano
18-10-2004, 08:02:34
Hola

Si los productos estan identificados de igual modo en las dos tablas, puedes utilizar la sentencia "INSERT" para intentar insertar cualquier artículo cada vez que vas a actualizar existencias.
Si intentas insertar un articulo que ya existe el "INSERT" dara un error y no lo insertará en caso contrario lo añadirá. Esta solución tiene el problema de que mandas un montón de sentencias "INSERT" que no valen para nada.

También puedes consultar si existe o no el artículo antes de actualizar las existencias y añadirlo en caso de que no exista.

Por último, podrías actualizar las dos tablas a la vez, es decir, cuando añadas un nuevo artículo, hazlo en las dos tablas, con lo que te aseguras que siemper tendrán los mísmos artículos.

Espero que te sirva de algo

ruina
18-10-2004, 15:57:24
Creo que en mysql no tenemos el maravilloso insert ... into ... from [Select]


Select * from otrosproductos
where codigo not in (select codigo from productos)


y ya tienes un dataset para recorrer e insertar

ctronx
18-10-2004, 16:15:24
Gracias, voy a probar sus sugerencias a ver que tal queda.

kayetano
18-10-2004, 17:20:54
Hola

Con MySql SI que se puede hacer
INSERT INTO miTabla SELECT * FROM miTabla

ctronx
19-10-2004, 16:27:03
ok, gracias, supongo que debe de aceptar restricciones where, voy a probar.