GARANTIR DESCONTO

Fórum Update com Sub Select #564721

26/10/2016

0

Boa tarde a todos!

Estou com uma dificuldade para fazer um update, seja com sub select ou inner join em um banco firebird.
Preciso que o campo id_doc_receber da tabela receber, receba o valor do campo num_nf_pedven da tabela pedven.
Os select's abaixo funciona normalmente:

select * from receber
where no_pedven in (select no_pedven from pedven
where cd_cli = cd_cli
and no_pedven = no_pedven
and dt_docto_receber = dt_pedven
and dt_pedven >= '01/01/2016')
and id_doc_receber = ''

select * from receber as rec
inner join pedven as ped on (rec.no_pedven = ped.no_pedven)
where id_doc_receber = ''
and rec.cd_cli = ped.cd_cli
and rec.dt_docto_receber = ped.dt_pedven
and ped.dt_pedven >= '01/01/2016'

Porém não consigo enxergar como fazer o update.
Aluma ajuda?
Poliana Santos

Poliana Santos

Responder

Posts

26/10/2016

Jones Granatyr

Opa! Uma ideia é fazer com subconsultas, por exemplo:

update TABELA set CAMPO = ? where CAMPO = (aqui faz os selects)
Responder

Gostei + 0

03/11/2016

Araujo Junior.

São duas Queries diferentes que voce tem.....

Pode ser mais ou menos assim:
UPDATE RECEBER
   SET CAMPO = BLABLA
 WHERE ID IN (
select ID
  from receber
  where no_pedven in (select no_pedven from pedven
					   where cd_cli = cd_cli
						 and no_pedven = no_pedven
						 and dt_docto_receber = dt_pedven
						 and dt_pedven >= '01/01/2016')
    and id_doc_receber = '')


UPDATE PED
   SET CAMPO = BLABLA
 WHERE PED.NO_PEDVEN IN (
select rec.id 
  from receber as rec inner join 
       pedven as ped on (rec.no_pedven = ped.no_pedven)
 where id_doc_receber = ''
   and rec.cd_cli = ped.cd_cli
   and rec.dt_docto_receber = ped.dt_pedven
   and ped.dt_pedven >= '01/01/2016')


Alguns bancos de dados permitem voce fazer assim:
UPDATE RECEBER
   set campo = blabla
  from receber
  where no_pedven in (select no_pedven from pedven
					   where cd_cli = cd_cli
						 and no_pedven = no_pedven
						 and dt_docto_receber = dt_pedven
						 and dt_pedven >= '01/01/2016')
    and id_doc_receber = ''


UPDATE PED
   SET CAMPO = BLABLA
  from receber as rec inner join 
       pedven as ped on (rec.no_pedven = ped.no_pedven)
 where id_doc_receber = ''
   and rec.cd_cli = ped.cd_cli
   and rec.dt_docto_receber = ped.dt_pedven
   and ped.dt_pedven >= '01/01/2016'
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar