Fórum Ajuda Update com inner join no firebird #455725

18/09/2013

0

Bom dia Mestres,

sou bem iniciante em FB e estou com a seguinte dificuldade:

O sistema que estou fazendo manutenção
tem uma tabela que guarda as informações do produto (PROD),
outra armazena a Unidade do produto (UNIDADE)
em outra é gravado o ID que relaciona as duas tabelas (UNPROD)

preciso fazer um update ou insert em um campo da tabela PROD usando como condicional a informação contida na tabela UNIDADE

fiz da seguinte maneira, sem sucesso:

update m3_prod
set precoliqfor = 1
where m3_prod.codprod in
(select a.codprod from
m3_prod a
inner join m3_unprod b on (a.id = b.idf_prod)
inner join M3_unidade c on (b.idf_unidade = c.id)
where c.codigo = 'Un'
AND
a.status = '1'
and
a.nmprod NOT LIKE 'caixa%'
and
a.codprod not like '99.8%')



porém desta maneira não esta considerando o campo a condicional do c.codigo (unica condição que pertence a outra tabela) e
o update esta se aplicando a todas as Unidades, no select funciona a condição 'Un' o que me leva a crer que o join esta
correto

só para explicar de uma maneira mais fácil, preciso inserir 1 no campo "precoliqfor" da tabela PROD sempre que o campo
"codigo" da tabela UNIDADE for 'Un'

Desde já Muito Obrigado,
Rodrigo Lopes
Rodrigo Lopes

Rodrigo Lopes

Responder

Posts

12/05/2017

Guilherme

Rodrigo, se entendi certo, sua query não está pegando a condição:

where c.codigo = ''Un''


Tenta colocar a condição dentro do INNER JOIN, assim:

update m3_prod
set precoliqfor = 1
where m3_prod.codprod in
(select a.codprod from
m3_prod a
inner join m3_unprod b on (a.id = b.idf_prod)
inner join M3_unidade c on (b.idf_unidade = c.id and c.codigo = ''Un'')
where
a.status = ''1''
and
a.nmprod NOT LIKE ''caixa%''
and
a.codprod not like ''99.8%'')
Responder

Gostei + 0

12/05/2017

Guilherme

Só retira as aspas extras, nem sei porquê duplicou.
Responder

Gostei + 0

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

Aceitar