Ajuda Update com inner join no firebird
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
Curtidas 0
Respostas
Guilherme
18/09/2013
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%'')
GOSTEI 0
Guilherme
18/09/2013
Só retira as aspas extras, nem sei porquê duplicou.
GOSTEI 0