Update com mais de uma tabela
Ola !
Pessoal
eu to querendo fazer um update em uma tabela onde os valores esta em outra:
Ex.:
Table_Lote Table_Estoque_Geral
---------------------------------------------------------------------------
Produto1 Produto1
QT Total
Lote1 100 123
Lote2 23
---------------------------------------------------------------------------
Produto2 Produto2
QT Total
Lote1 300 345
Lote2 45
O update faria a soma dos lotes e atualizaria o total na Table_Estoque_Geral
eu testei o seguinte update:
Update Table_Estoque_Geral set Total = ´select sum(qt) from Table_Lote where codprod = ´Produto1´;
Mas nao funcionou !
Alguem poderia me ajudar neste update ?
Pessoal
eu to querendo fazer um update em uma tabela onde os valores esta em outra:
Ex.:
Table_Lote Table_Estoque_Geral
---------------------------------------------------------------------------
Produto1 Produto1
QT Total
Lote1 100 123
Lote2 23
---------------------------------------------------------------------------
Produto2 Produto2
QT Total
Lote1 300 345
Lote2 45
O update faria a soma dos lotes e atualizaria o total na Table_Estoque_Geral
eu testei o seguinte update:
Update Table_Estoque_Geral set Total = ´select sum(qt) from Table_Lote where codprod = ´Produto1´;
Mas nao funcionou !
Alguem poderia me ajudar neste update ?
Skire
Curtidas 0
Respostas
Joni Nunes
14/12/2005
Olá, não entendi direito suas tabelas, mas verificando o sql faltou o group by para o produto.
GOSTEI 0
Souzath
14/12/2005
Oi Skire,
Para esse update vc vai ter que fazer uma subconsulta. Veja se isso te atende:
Isso deve funcionar... ou entao, vc pode fazer um bloquinho PLSQL para fazer o update em um cursor, assim:
desse jeito vc pode depois evoluir essa parada para um LOOP se vc precisar fazer updates em lote.
Abraço
Thiago
Para esse update vc vai ter que fazer uma subconsulta. Veja se isso te atende:
UPDATE table_estoque_geral SET total = (SELECT sum(qt) FROM table_lote WHERE codprod=´XPTO´);
Isso deve funcionar... ou entao, vc pode fazer um bloquinho PLSQL para fazer o update em um cursor, assim:
DECLARE CURSOR c_lotes IS SELECT sum(qt) FROM table_lote WHERE codprod=´XPTO´; v_soma NUMBER; BEGIN OPEN c_lotes; FETCH c_lotes INTO v_soma; CLOSE c_lotes; UPDATE table_estoque_geral SET total = v_soma; COMMIT; END;
desse jeito vc pode depois evoluir essa parada para um LOOP se vc precisar fazer updates em lote.
Abraço
Thiago
GOSTEI 0