Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Calcular un saldo respecto a 2 tablas (https://www.clubdelphi.com/foros/showthread.php?t=34609)

Walterdf 15-08-2006 15:33:10

Calcular un saldo respecto a 2 tablas
 
Buenas
Necesito ayuda para armar esta consulta.
Tengo una base de datos FireBird con dos tablas de esta manera:

STOCK con los campos deposito, codigo, marca, saldo
RETIRO con los campos deposito, codigo, marca, cantidad

necesito descontar del saldo del stock la cantidad que corresponda, o sea, donde
STOCK.deposito = RETIRO.deposito y
STOCK.codigo = RETIRO.codigo y
STOCK.marca = RETIRO.marca
hacer STOCK.saldo = STOCK.saldo - RETIRO.cantidad

Si alguien puede darme una mano se lo agradeceré.
Saludos.

Walter

roman 15-08-2006 16:58:02

Así a bote pronto creo que tú mismo te has contestado:

Código SQL [-]
select stock.saldo - retiro.cantidad
from stock,retiro
where
  stock.deposito = retiro.deposito and
  stock.codigo = retiro.codigo and
  stock.marca = retiro.marca

Lo que me parece extraño es que da la imprensión de que tienes una relación 1-1 entre stock y retiro, de manera que no sé por qué no están en una misma tabla.

// Saludos

Walterdf 15-08-2006 18:57:47

Gracias Roman
El código que me pasaste realiza la operación pero no actualiza el campo saldo de la tabla stock.

En realidad la relacion no es de 1-1, esto era para usar solo en este caso por un retiro que se hizo a "mano" en un excel y para no descontar uno a uno cada codigo migré el excel a una tabla y con la consulta realicé el descuento.

Gracias nuevamente.

Walter

maeyanes 15-08-2006 19:13:15

Para actualizar la tabla usa una sentencia UPDATE:

Código SQL [-]
update
  stock a
set
  a.saldo = (
    select
      b.saldo - c.cantidad
    from
      stock b,
      retiro c
    where
      b.deposito = c.deposito and
      b.codigo = c.codigo and
      b.marca = c.marca and
      b.idstock = a.idstock) /* Campo clave de la tabla stock */

Esto te debería funcionar, pruebalo...


Saludos...

Walterdf 15-08-2006 19:30:03

Mil gracias a todos!!! funcionó bien!!
Saludos.

Walter


La franja horaria es GMT +2. Ahora son las 02:14:10.

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