Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Actualizar existencia de productos e insertar nuevos si no se encuentran (https://www.clubdelphi.com/foros/showthread.php?t=15270)

ctronx 16-10-2004 02:06:47

Actualizar existencia de productos e insertar nuevos si no se encuentran
 
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]

Código SQL [-]
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
Código SQL [-]
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.


La franja horaria es GMT +2. Ahora son las 02:37:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi