USANDO O UPDATE E MAX ID

JONATHANSTECKER 15/06/2010 13:45:02
#344878
Boa tarde,

Tenho uma tabela OC | Envio | DataInicial | DataFinal

Onde OC é a ordem de cliente, e é por ela que identifico de que projeto são essas informações.
O Envio é digamos um ID da linha, cada vez que mando um envio para o cliente criado um novo cadastro e acrescido um número no campo de Envio. (1, 2, 3)
E quando o cliente me dá uma resposta eu atualizo a data final desse cadastro.

Bom, gostaria de atualizar onde a OC = [Ô]Ordem[Ô] e o Envio = Max (Envio).

UPDATE tabela
SET DataFinal= [Ô]Data[Ô]
WHERE OC = [Ô]Ordem[Ô]
AND Max(Envio)

LLAIA 15/06/2010 20:31:18
#344925
veja se te ajuda com subconsulta:

UPDATE tabela SET DataFinal = [Ô]Data[Ô]
WHERE OC = [Ô]Ordem[Ô] AND Envio = (select max(Envio) from tabela where OC=[Ô]Ordem[Ô])
JONATHANSTECKER 16/06/2010 08:46:30
#344948
Não deu certo...
ERRO --> You can[ô]t specify target table [ô]tabela[ô] for update in FROM clause
FOXMAN 16/06/2010 10:24:09
#344964
Resposta escolhida
Tipo,
são vários registros da mesma OC ???

Exemplo :
OC | Envio | DataInicial | DataFinal
55 |1 |00/00/00 |01/01/01
55 |2 |01/00/00 |02/01/01
55 |3 |02/00/00 |03/01/01

Citação:

Bom, gostaria de atualizar onde a OC = [Ô]Ordem[Ô] e o Envio = Max (Envio).


Você quer atualizar DataFinal= [Ô]Data[Ô] onde OC=[Ô]Ordem[Ô] e o Envio = [Ô]3[Ô] ???? No caso acima exemplificado ????

Se for isso tente utilizar novamente o LAST_INSERT_ID(ENVIO) com um Order By e um Limit 1 que da certo

UPDATE TESTE
SET DataFinal= [ô]01/01/01[ô] WHERE OC = [ô]55[ô] AND ENVIO = (LAST_INSERT_ID(ENVIO)) ORDER BY ENVIO DESC LIMIT 1;


Não esqueça de encerrar os tópicos e pontuar a resposta que melhor atendeu sua dúvida.
JONATHANSTECKER 16/06/2010 10:29:17
#344965
Perfeito Foxman !
Tópico encerrado , respostas não são mais permitidas