SELECT DENTRO DO UPDATE

02/02/2019

0

Tenho uma tabela com vários pedidos de N clientes e preciso pegar qual foi o último pedido desse cliente , carregando o numero do pedido, o código desse cliente e por fim atualiza-lo.

O select funciona perfeitamente, falta atualizar!

UPDATE tbxerox x
INNER JOIN tbservidores s on s.cpfserv = x.cpf
SET x.qtd_xerox = 0,
maxcot = (tbxerox.restcota + 80)
where x.cpf in (select x.cpf from (SELECT x.cpf FROM tbxerox x
group by x.cpf
order by x.cpf desc)QRYALIAS )

and s.tiposerv = 'Professor’
and (x.restcota) > 0;
Igor

Igor

Responder

Posts

02/02/2019

Hélio Devmedia

Olá igor,

Ficou meio vago o que você precisa e seu select ficou redundante, você obteria o mesmo select se você utilizasse

select x.cpf from (SELECT x.cpf FROM tbxerox x
group by x.cpf
order by x.cpf desc)

por

Select Distinct x.cpv from tbxerox x order by x.cpf desc

porém isso fica muito redundante porque o update está varrendo todos os registros de tbxerox no update já que no where vc está procurando cpf dentro da própria tabela de cpf de tbxerox.

É importante organizar isto...

No que precisa estou aqui pra te ajudar...
Responder

02/02/2019

Igor

Olá igor,

Ficou meio vago o que você precisa e seu select ficou redundante, você obteria o mesmo select se você utilizasse

select x.cpf from (SELECT x.cpf FROM tbxerox x
group by x.cpf
order by x.cpf desc)

por

Select Distinct x.cpv from tbxerox x order by x.cpf desc

porém isso fica muito redundante porque o update está varrendo todos os registros de tbxerox no update já que no where vc está procurando cpf dentro da própria tabela de cpf de tbxerox.

É importante organizar isto...

No que precisa estou aqui pra te ajudar...


Boa noite!
Você teria alguma ideia para UPDATE atualizar apenas esses registros selecionados no SELECT?

Está certo o SELECT ser uma clausula nesse caso?
Responder

03/02/2019

Igor

Obrigado por responder!

Deu certo com esse código:

UPDATE tbxerox x
INNER JOIN tbservidores s on s.cpfserv = x.cpf
INNER JOIN
(
select max(xerox) as xerox
from tbxerox
group by cpf
) u on u.xerox = x.xerox
SET
x.qtd_xerox = 0,
s.maxcot = x.restcota + 80
where x.restcota > 0
and s.tiposerv = 'Professor';

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar