GARANTIR DESCONTO

Fórum Update com Subselect #50083

25/03/2005

0

Olá Pessoal, estou com o seguinte problema.
Anteriormente tinha um tabela denominada ´CLIENTE´ com um campo denominado ´CIDADE´ e recentemente precisei criar um campo denomidado [color=blue:7c2823d40b]´ID_CIDADE´[/color:7c2823d40b] que é agora referenciado atravez de ´FK´ com ´TABELA CIDADE´ (Tambem criada recentemente). Acontece que preciso atualizar o campo sem que o usuario tenha que cadastrar as cidades (id_cidade) novamente na ´Tabela clientes´. Ja Inseri todass as cidade que exitem na ´tabela cliente´ na ´tabela cidade criada recentemente´ como o seguinte sql:

IBQryCidade.close
IBQryCidade.sql add(´select distinct( CIDADE) FROM CLIENTE ORDER BY CIDADE´);
IBQryCidade.open;

IBQryCidade.First;
WHILE NOT IBQryCidade.Eof DO
BEGIN
IBSQL1.close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add(´insert into CIDADE ´
´ ID, NOME_CIDADE, STATUS)´+
´values ´+
´( :ID, :NOME_CIDADE)´);
IBSQL1.Parambyname(´ID´).AsInteger:=GerarNovoCodigo(´GEN_CIDADE´);;
IBSQL1.Parambyname(´NOME_CIDADE´).AsString:= IBSQL1.ExecQuery;
IBQryCidade.Next;
END;
dmBaseDados.Trans.CommitRetaining;



Acontece que preciso agora atualizar o campo ´ID_CIDADE´ da tabela CLIENTE e não estou conseguindo. Estou tentando o sql abaixo, mas da erro. Alguem pode me ajudar?

[color=red:7c2823d40b]UPDATE CLIENTE SET ID_CIDADE =
(SELECT ID FROM cidade WHERE NOME_CIDADE =
SELECT distinct( CIDADE.nome_cidade) FROM cidade , CLIENTE WHERE CLIENTE.CIDADE = CIDADE.NOME_CIDADE);[/color:7c2823d40b]


Siro

Siro

Responder

Posts

25/03/2005

Emerson Nascimento

tente assim:

UPDATE CLIENTE SET ID_CIDADE =
   (SELECT ID FROM cidade WHERE NOME_CIDADE = CIDADE.nome_cidade)



Responder

Gostei + 0

25/03/2005

Siro

Ola emerson,

Ainda contiua o erro:

[color=blue:b5f53d04c7]multiple rows in singleton select[/color:b5f53d04c7]


Responder

Gostei + 0

25/03/2005

Emerson Nascimento

se está dando esse erro, há duas cidades cadastradas com o mesmo nome.

tente assim que deverá funcionar:
UPDATE CLIENTE SET ID_CIDADE = 
   (SELECT max(ID) FROM cidade WHERE NOME_CIDADE = CIDADE.nome_cidade)



Responder

Gostei + 0

25/03/2005

Siro

Obrigado pela atenção Anderson.

Fiz uma perquena correção aqui [color=blue:7dc0fb2188](WHERE NOME_CIDADE = CLIENTE.CIDADE)[/color:7dc0fb2188] e funcionou perfeitamente...

Valeu, me poupou muita ´dor de cabeça´!

T+


Responder

Gostei + 0

25/03/2005

Siro

Perdao emerson,

Troquei se nome.

Abraços.


Responder

Gostei + 0

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

Aceitar