DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Caroline Caca
 

País: Brasil
Estado: SP
Cidade: Santos
Mensagens: 1
 Postado em: 11/11/2011 4:24:59 PM

Preciso fazer um update no campo pre_del apenas nos listados na select, mas quando rodo atualiza todos os registros.
Alguém sabe como corrigir isso?

Update bnf_pre_banco set bnf_pre_banco.pre_del = B
WHERE PRE_DEL IN ( SELECT BANCO FROM
( SELECT b.pre_con||b.pre_est||b.pre_ben MATRICULA
,b.pre_nom NOME
,b.pre_ven VENCIMENTO
,b.pre_val VALOR
,b.pre_del BANCO
,SUM(B.PRE_VAL) OVER (ORDER BY B.PRE_BEN) ACUMULADO
FROM BNF_PRE_BANCO B
GROUP BY b.pre_con, b.pre_est,b.pre_ben,b.pre_nom,b.pre_ven,b.pre_val, b.pre_del
ORDER BY B.PRE_BEN)
WHERE ACUMULADO < 600)
Marco Pinheiro
 
 


País: Brasil
Estado: MG
Cidade: Belo Horizonte
Mensagens: 110
 Postado em: 16/11/2011 10:09:26 AM
Se você rodar o comando abaixo, são mostrados somente os registros que você quer que altere?

select * from bnf_pre_banco
WHERE PRE_DEL IN ( SELECT BANCO FROM
( SELECT b.pre_con||b.pre_est||b.pre_ben MATRICULA
,b.pre_nom NOME
,b.pre_ven VENCIMENTO
,b.pre_val VALOR
,b.pre_del BANCO
,SUM(B.PRE_VAL) OVER (ORDER BY B.PRE_BEN) ACUMULADO
FROM BNF_PRE_BANCO B
GROUP BY b.pre_con, b.pre_est,b.pre_ben,b.pre_nom,b.pre_ven,b.pre_val, b.pre_del
ORDER BY B.PRE_BEN)
WHERE ACUMULADO < 600)

 
Luan Soares
 

País: Brasil
Estado: MG
Cidade: Ibirité
Mensagens: 3
 Postado em: 16/11/2011 3:19:05 PM
Cara, minha praia está sendo o firebird. Mas com o pouco conhecimento que tenho de Oracle(e sua semelhança com FB) vi que esse código está MUITO errado.

OBS: O que eu modifiquei no código, está entre { (chaves)

Update bnf_pre_banco set bnf_pre_banco.pre_del = {}B{}
WHERE {bnf_pre_banco.}PRE_DEL IN
( SELECT BANCO FROM

//{from o que!?}

{where {from o que!?}.{coluna o que!?} in}

//Aqui por se tratar de um subselect, você só pode buscar UMA coluna.

( SELECT {UMA COLUNA SÓ}
FROM BNF_PRE_BANCO B
GROUP BY {REVEJA A COLUNA QUE IRÁ AGRUPAR}
ORDER BY {UMA COLUNA POR FAVOR})


{and} ACUMULADO < 600)

Seria bom também, para um melhor entendimento. Você postar os scripts de criação das tabelas, para recriarmos em nosso banco de dados e fazer os testes.

 
Luan Soares
 

País: Brasil
Estado: MG
Cidade: Ibirité
Mensagens: 3
 Postado em: 16/11/2011 3:22:43 PM

Citação:
Cara, minha praia está sendo o firebird. Mas com o pouco conhecimento que tenho de Oracle(e sua semelhança com FB) vi que esse código está MUITO errado.

OBS: O que eu modifiquei no código, está entre { (chaves)

Update bnf_pre_banco set bnf_pre_banco.pre_del = {aspas}B{aspas}
WHERE {bnf_pre_banco.}PRE_DEL IN
( SELECT BANCO FROM

//{from o que!?}

{where {from o que!?}.{coluna o que!?} in}

//Aqui por se tratar de um subselect, você só pode buscar UMA coluna.

( SELECT {UMA COLUNA SÓ}
FROM BNF_PRE_BANCO B
GROUP BY {REVEJA A COLUNA QUE IRÁ AGRUPAR}
ORDER BY {UMA COLUNA POR FAVOR})


{and} ACUMULADO < 600)

Seria bom também, para um melhor entendimento. Você postar os scripts de criação das tabelas, para recriarmos em nosso banco de dados e fazer os testes.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03