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:
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
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
Curtir tópico
+ 0
Responder
Posts
12/05/2017
Guilherme
Rodrigo, se entendi certo, sua query não está pegando a condição:
Tenta colocar a condição dentro do INNER JOIN, assim:
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
Clique aqui para fazer login e interagir na Comunidade :)