SELECT DENTRO DO UPDATE
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;
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
Curtidas 0
Respostas
Hélio Devmedia
02/02/2019
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...
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...
GOSTEI 0
Igor
02/02/2019
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...
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?
GOSTEI 0
Igor
02/02/2019
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';
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';
GOSTEI 0