Fórum Update com Subselect #50083
25/03/2005
0
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
Curtir tópico
+ 0Posts
25/03/2005
Emerson Nascimento
UPDATE CLIENTE SET ID_CIDADE = (SELECT ID FROM cidade WHERE NOME_CIDADE = CIDADE.nome_cidade)
Gostei + 0
25/03/2005
Siro
Ainda contiua o erro:
[color=blue:b5f53d04c7]multiple rows in singleton select[/color:b5f53d04c7]
Gostei + 0
25/03/2005
Emerson Nascimento
tente assim que deverá funcionar: UPDATE CLIENTE SET ID_CIDADE = (SELECT max(ID) FROM cidade WHERE NOME_CIDADE = CIDADE.nome_cidade)
Gostei + 0
25/03/2005
Siro
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+
Gostei + 0
25/03/2005
Siro
Troquei se nome.
Abraços.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)