[firebase-br] Help URGENTE

diego.firebird diego.firebird em terra.com.br
Qua Nov 17 11:00:26 -03 2004


> UPDATE DUPLICATA SET pes_codrep =
> 
> (SELECT FIRST 1 p.pes_cod_rep FROM PEDIDO p, DUPLICATA d WHERE
> 
> p.ped_numero = d.ped_numero)
> 
> WHERE pes_codrep IS NULL
> 
> ----- Original Message -----
> From: "Henrique Ribeiro" 
> To: "FireBase" 
> Sent: Tuesday, November 16, 2004 5:27 PM
> Subject: [firebase-br] Help URGENTE
> 
> 
> Boa noite pessoal,
> 
> Estou tentando atualizar uma tabela com o seguinte SCRIPT:
> 
> UPDATE DUPLICATA SET pes_codrep =
> 
> (SELECT DISTINCT p.pes_cod_rep FROM PEDIDO p, DUPLICATA d WHERE
> 
> p.ped_numero = d.ped_numero)
> 
> WHERE pes_codrep IS NULL
> 
> mas tá dando erro dizendo que a subconsulta de uma única linha retorna mais
> de uma linha.
> 
> Alguém poderia me dar um HELP?
> 
> Agradeço desde já.
> 
> [ ]'s

Voce pode seguir a seguinte solucao:

update tabela1 set campo1 = 
(select disctinct (tab1.campo2) from tabela1 as tab1, tabela2 as tab2
where tab1.campo2 = tab2.campo1)
where campo1 is null

tabela1                 tabela2
  -campo1                -campo1
  -campo2  

A select distinct esta te retornando mais de um registro, pois ela esta retornando tudo
oque há de distinto entre as duas tabelas, voce deve estar pensando que ela faz isso por 
registro, enquanto so a select no caso "update" que seta a cada registro.
A cada update da tabela1, o campo1 esta sendo comparado com varios registros.
No caso voce deve ter um outro campo de referencia para relacionar, de maneira que a select distinct te retorne um unico registro, por exemplo uma chave primaria. 
  
Abib. 


Mais detalhes sobre a lista de discussão lista