UPDATE COM SELECT DENTRO
Bom dia galera..
Estou tentando atualizar o valor de desconto de registros de uma tabela.
E pra isso eu queria atualizar o maior valor pago onde o codigo da venda for igual a X.
fiz assim
Mas deu erro....
You cant specify table [ô]movimento[ô] for update in from clause;
Estou tentando atualizar o valor de desconto de registros de uma tabela.
E pra isso eu queria atualizar o maior valor pago onde o codigo da venda for igual a X.
fiz assim
con.Execute [Ô]update movimento set desconto = [Ô] & Replace(varDescontoTotal, [Ô],[Ô], [Ô].[Ô]) & [Ô] where codorc = [Ô] & varNumeroVenda & [Ô] and valorpago = (select max(valorpago) from movimento where codorc =[Ô] & varNumeroVenda & [Ô])[Ô]
Mas deu erro....
You cant specify table [ô]movimento[ô] for update in from clause;
Quando tu usa duas vezes a mesma tabela numa instrução, você deve atribuir ALIAS a elas.
Update Movimento A
Set A.Nome = [ô]FODAO[ô]
Where A.Codigo = (Select Max(Codigo) From Movimento B Where B.Tipo = [Ô]Ash Katchup[Ô])
Nao deu certo amigo..Continou o mesmo erro..trocou de movimento para [ô]A[ô].
Porém gostei da sua humildade kkkkk
con.Execute [Ô]update movimento A set A.desconto = [Ô] & Replace(varDescontoTotal, [Ô],[Ô], [Ô].[Ô]) & [Ô] where A.codorc = [Ô] & varNumeroVenda & [Ô] and A.valorpago = (select max(B.valorpago) from movimento B where B.codorc =[Ô] & varNumeroVenda & [Ô])[Ô]
Porém gostei da sua humildade kkkkk
Qual banco de dados?
MySQL.
Deficiência do MYSQl... FAIL... Isso funciona em SQLServer e Oracle..
Citação:
Answer No: 156
Actually, your above update query seems illegal as per SQL standard. MySQL does not allow to UPDATE or DELETE a table[ô]s data if you[ô]re simultaneously reading that same data with a subquery. Because you are doing so that is why MySQL tersely said its such error message. Therefore, you will have to rewrite your above update query.
Omg.. vou fazer por recordset mesmo..
Obrigado FODAO.
Obrigado FODAO.
Pelo o que os manolos do MYSql falaram, TALVEZ isso funcione
update movimento
set desconto = 10
where codorc = 1
and valorpago = (select max(valorpago) from (Select * From Movimento) where codorc = 1)
Optei pelo recordset mesmo.
Desta forma acho que iria ficar muito lento. vlw pela ajuda ASH
Desta forma acho que iria ficar muito lento. vlw pela ajuda ASH
eu não sei mas acho que como é na mesma tabela um simples max resolveria algo do tipo
con.Execute [Ô]update movimento set desconto = [ô][Ô] & Replace(varDescontoTotal, [Ô],[Ô], [Ô].[Ô]) & [Ô][ô] where codorc = [ô][Ô] & varNumeroVenda & [Ô][ô] and valorpago = max(valorpago)[Ô]
Tópico encerrado , respostas não são mais permitidas