Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Update con Join (https://www.clubdelphi.com/foros/showthread.php?t=88865)

kcaARLOosz 15-08-2015 19:35:05

Update con Join
 
Tengo esta consulta:

Código SQL [-]
select
    cf.pventa,
    cf.serie,
    cf.folio,
    cf.indice,
    cf.total
from
    drybcuenf cf
join
    drybcuen c
        on cf.pventa = c.pventa
        and cf.serie = c.serie
        and cf.folio = c.folio
where
    c.suma = 0 and
    c.horacierra is null

En vez de que me devuelva los registros, quiero hacerles un Update en el campo cf.total = 0

nlsgarcia 15-08-2015 19:46:00

kcaARLOosz,

¡Bienvenido al Club Delphi! :D

Nelson.

kcaARLOosz 15-08-2015 20:11:41

Hola!
 
Mucho gusto!

Casimiro Notevi 15-08-2015 20:32:11

¿Qué problema tienes?

kcaARLOosz 15-08-2015 20:37:30

Quiero saber si hay una forma de hacer un update con ese inner join en una misma sentencia para que me actualice cf.total = 0

Casimiro Notevi 15-08-2015 20:42:36

Sigue sin entenderse lo que quieres.
¿Para qué quieres hacer ese select para hacer un update?
Código SQL [-]
update drybcuenf set total=? where ........

kcaARLOosz 15-08-2015 20:49:57

Necesito hacer un update en el campo total de la tabla drybcuenf a los registros que cumplan con la condición where suma = 0 and horacierra is null de la tabla drybcuen

Casimiro Notevi 15-08-2015 20:55:18

Ya entendí.
¿Cuál es la estructura de ambas tablas y los campos que las relacionan?

kcaARLOosz 15-08-2015 21:01:32

La consulta que te muestro me devuelve los registros a los que les quiero hacer el update en el campo total de la tabla drybcuenf. Eso es lo que no sé hacer, el update cumpliéndose las condiciones de la consulta.
Código SQL [-]
select
    cf.pventa,
    cf.serie,
    cf.folio,
    cf.indice,
    cf.total
from
    drybcuenf cf
join
    drybcuen c
        on cf.pventa = c.pventa
        and cf.serie = c.serie
        and cf.folio = c.folio
where
    c.suma = 0 and
    c.horacierra is null
Para ver si me entiendes mejor, sería algo como.
Código SQL [-]
update drybcuenf set total = 0 where drybcuen.suma = 0 and drybcuen.horacierra is null

Casimiro Notevi 15-08-2015 21:23:06

¿Cuál es la estructura de ambas tablas y los campos que las relacionan?

kcaARLOosz 15-08-2015 21:28:12

Los campos que las relacionan son pventa, serie y folio.

drybcuenf tiene los siguientes campos:

pventa integer,
serie char,
folio integer,
total double

drybcuen tiene los siguientes campos:

pventa integer,
serie char,
folio integer,
horacierra date,
suma double

ecfisa 15-08-2015 22:41:56

Hola kcaARLOosz.

Creo que podrías hacer:
Código SQL [-]
UPDATE DRYBCUENF CF SET TOTAL = 0
WHERE EXISTS (SELECT C.PVENTA FROM DRYBCUEN C
              WHERE CF.PVENTA = C.PVENTA AND CF.SERIE = C.SERIE
              AND CF.FOLIO = C.FOLIO AND C.SUMA = 0 AND C.HORACIERRA IS NULL)

Saludos :)

kcaARLOosz 16-08-2015 00:55:19

Muchas gracias por las respuestas!:)

¿Servirá para múltiples registros?. Por el momento no tengo acceso a la BD, pero cuando haga las pruebas notifico como me fue.

Excelente foro. :cool:^\||/

kcaARLOosz 17-08-2015 17:07:36

Muchas gracias a ambos! :D

Me sirvió tu respuesta eficsa.


La franja horaria es GMT +2. Ahora son las 12:36:19.

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