Fórum Como dar um update pegando o resultado de um select(execute block) #522349
09/06/2015
0
Tabela :PRODUTO
Campos: SECCOD, GRPCOD, SGRCOD, PRONCM
e
Tabela SUBGRUPO
Campos: SECCOD, GRPCOD, SGRCOD, SGRNCM.
preciso que o comando pegue o valor do SGRNCM da tabela SUBGRUPO e atualize o PRONCM da tabela PRODUTO
Quando o SECCOD,GRPCOD, SGRCOD forem os mesmo da tabela produto.
Nisso ele alteraria todos os produtos com o ncm do campo SGRNCM... como faço?
Dei um select que foi:
select i.sgrncm,p.proncm from produto as p left join subgrupo as i on (p.seccod = i.seccod) and (p.grpcod = i.grpcod) and(p.sgrcod = i.sgrcod)
porém como faço para ele fazer o PRONCM assumir o SGRNCM?
Bruno Zanca
Curtir tópico
+ 0Posts
10/06/2015
Marisiana Battistella
Gostei + 0
10/06/2015
Wilson Vieira
O comando ficaria assim
update produto p set p.proncm = (select s.sgrncm from subgrupo s where s.seccod = p.seccod)
Gostei + 0
12/06/2015
Marisiana Battistella
Gostei + 0
12/06/2015
Bruno Zanca
RETURNS (sec1 char(2), grp1 char(3),sgr1 char(3), prncm1 VARCHAR(20),sgrcm2 VARCHAR(20),sec2 char(2), grp2 char(3),sgr2 char(3))
AS
BEGIN
FOR SELECT p.seccod, p.grpcod, p.sgrcod, p.proncm, i.sgrncm , i.seccod, i.grpcod, i.sgrcod FROM produto p left join subgrupo i on p.seccod = i.seccod into :sec1, :grp1, :sgr1, :prncm1, :sgrcm2 , :sec2, :grp2, :sgr2
DO
begin
update produto p set p.proncm = :sgrcm2 where ((:sec1 = :sec2) and (:grp1 = :grp2) and (:sgr1 = :sgr2)) ;
SUSPEND;
end
END
Tentei assim nao deu certo, ele nao trocou o ncm dos produtos de acordo com o ncm do subgrupo....usando essas condiçoes secao grupo e subgrupo iguais para pegar sgrncm
Gostei + 0
12/06/2015
Bruno Zanca
RETURNS (sec1 char(2), grp1 char(3),sgr1 char(3), prncm1 VARCHAR(20),sgrcm2 VARCHAR(20),sec2 char(2), grp2 char(3),sgr2 char(3))
AS
BEGIN
FOR SELECT p.seccod, p.grpcod, p.sgrcod, p.proncm, i.sgrncm , i.seccod, i.grpcod, i.sgrcod FROM produto p left join subgrupo i on p.seccod = i.seccod into :sec1, :grp1, :sgr1, :prncm1, :sgrcm2 , :sec2, :grp2, :sgr2
DO
begin
update produto p set p.proncm = :sgrcm2 where ((:sec1 = :sec2) and (:grp1 = :grp2) and (:sgr1 = :sgr2)) ;
SUSPEND;
end
END
Tentei assim nao deu certo, ele nao trocou o ncm dos produtos de acordo com o ncm do subgrupo....usando essas condiçoes secao grupo e subgrupo iguais para pegar sgrncm
Gostei + 0
12/06/2015
Bruno Zanca
RETURNS (sec1 char(2), grp1 char(3),sgr1 char(3), prncm1 VARCHAR(20),sgrcm2 VARCHAR(20),sec2 char(2), grp2 char(3),sgr2 char(3))
AS
BEGIN
FOR SELECT p.seccod, p.grpcod, p.sgrcod, p.proncm, i.sgrncm , i.seccod, i.grpcod, i.sgrcod FROM produto p left join subgrupo i on p.seccod = i.seccod into :sec1, :grp1, :sgr1, :prncm1, :sgrcm2 , :sec2, :grp2, :sgr2
DO
begin
update produto p set p.proncm = :sgrcm2 where ((:sec1 = :sec2) and (:grp1 = :grp2) and (:sgr1 = :sgr2)) ;
SUSPEND;
end
END
Tentei assim nao deu certo, ele nao trocou o ncm dos produtos de acordo com o ncm do subgrupo....usando essas condiçoes secao grupo e subgrupo iguais para pegar sgrncm
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)