Página 1 de 1

Update com select

Enviado: 31 Mai 2025 09:27
por Poka
Bom dia,

assim, funciona.

Código: Selecionar todos

str:="UPDATE pagard001 p ";
+"SET p.coddesp  = ( SELECT first 1 s.coddesp  FROM pagar_simples001 s  WHERE p.docum||p.codfor = s.docum||s.codfor )";
+",  p.cencusto  = ( SELECT first 1 s.cencusto  FROM pagar_simples001 s  WHERE p.docum||p.codfor = s.docum||s.codfor );"

assim dá erro, s.cencusto não existe, ou é assim mesmo?
não precisaria de dois selects, pois já estou no registro correto com o select.

Código: Selecionar todos

str:="UPDATE pagard001 p ";
+"SET p.coddesp  = ( SELECT first 1 s.coddesp  FROM pagar_simples001 s  WHERE p.docum||p.codfor = s.docum||s.codfor ) ";
+",  p.cencusto  = s.cencusto;"

Poka

Update com select

Enviado: 31 Mai 2025 16:05
por Fernando queiroz
O erro principal aqui é que você está tentando fazer uma atribuição direta de p.cencusto = s.cencusto fora do subquery (subconsulta) que aparece no primeiro SET. Ou seja, o SQL não sabe onde encontrar s.cencusto nesse contexto — pois s está definido dentro do subquery.

Em um UPDATE com subquerys, para que você consiga atualizar mais de uma coluna, normalmente você faz um JOIN em vez de usar subquerys para cada coluna.

tenta assim

Código: Selecionar todos

UPDATE pagard001 p
SET 
  p.coddesp = (SELECT first 1 s.coddesp FROM pagar_simples001 s WHERE s.docum || s.codfor = p.docum || p.codfor),
  p.cencusto = (SELECT first 1 s.cencusto FROM pagar_simples001 s WHERE s.docum || s.codfor = p.docum || p.codfor);

Update com select

Enviado: 31 Mai 2025 19:45
por JoséQuintas
Poka escreveu: assim dá erro, s.cencusto não existe, ou é assim mesmo?
não precisaria de dois selects, pois já estou no registro correto com o select.
Só na sua cabeça.
No comando SQL nem sequer está com a tabela aberta.

É igual mandar seu filho na padaria comprar pão.
E quando ele chegar, falar pra pegar o leite também, alegando que a padaria tá junto com ele.
É isso que tá fazendo no SQL, tá querendo pegar campo do que não está lá.

Update com select

Enviado: 01 Jun 2025 08:56
por Poka
Obrigado Quintas.



Poka

Update com select

Enviado: 01 Jun 2025 08:56
por Poka
Obrigado Quintas.



Poka