Ir para conteúdo
Fórum Script Brasil
  • 0

alteração de dados com base em dados de 2 tabelas via postgresql


SombraVarvas

Pergunta

Olá,

estou modelando um banco de dados de CEP.

já estou com todos os dados falta agora o bendito código de municipio do ibge

consegui uma tabelinha com o código IBGE .

No entanto eu teria que alterar os registos no campo "CIDADE" para o código da cidade que já possuo na minha tabela "CIDADES"

essa é a estrutura das duas tabelas

TABELA CIDADE  
    campos  
    cod_cidade  |   cod_estado  |  cidade   |  
      
    Ex de registro:     
    1    |   1     |   Porto Alegre  |  
      
      
    TABELA IBGE  
    cod_ibge  |  cod_estado   |  cidade   |  ibge   |  
      
    ex de registro :   
    1   |   1   |   Porto Alegre   |   220000 |
eu entendo muito pouco de sql. Queria saber se tem alguma maneira de fazer um script via sql que... verifica o código do estado da cidade é igual ao da tabela IBGE E a cidade for o mesmo nome, alterar o registro DA TABELA ibge tirando o nome da cidade para o código da tabela cidade. com isso o registro na tabela IBGE ficaria assim
1   |   1   |   1   |   220000 |
são mais de 5mil registro fazer a mao vai ser complicado se compliquei me perguntem q eu tento exemplificar melhor agradeço a atenção!


			
		
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

É possível:

create table cidade (cod_cidade int, cod_estado int, cidade varchar(100));
create table ibge (cod_ibge int, cod_estado int, cidade varchar(100), ibge int);

insert into cidade (cod_cidade, cod_estado, cidade) values 
(1, 1, 'Porto Alegre'),
(2, 2, 'São Paulo');

insert into ibge (cod_ibge, cod_estado, cidade, ibge) values 
(1, 1, 'Porto Alegre', 220000),
(2, 2, 'são Paulo', 330000);

update ibge
set cidade = to_char(cidade.cod_cidade, 'FM99999999')
from cidade
where 
    ibge.cod_estado = cidade. cod_estado
    and
    ibge.cidade = cidade.cidade
;
UPDATE 1
cpn=> select * from ibge;
 cod_ibge | cod_estado |  cidade   |  ibge  
----------+------------+-----------+--------
        2 |          2 | são Paulo | 330000
        1 |          1 | 1         | 220000
(2 rows)
Mas não é uma boa idéia pois vai depender de os nomes das cidades nas duas tabelas terem as mesmas grafias e também de existirem todas as cidades da tabela ibge na tabela cidade. Assim, como no exemplo, acima vão ficar faltando cidades sem converter e vai virar uma confusão. As duas tabelas não são referenciáveis entre si e não existe solução automatizada para este problema. O menos ruim que você pode fazer é consultar fazendo a junção das tabelas assim:
select 
    c.cod_cidade, c.cod_estado, c.cidade,
    i.cod_ibge, i.cod_estado, i.cidade, i.ibge
from ibge i
left outer join cidade c on i.cod_estado = c.cod_estado and i.cidade = c.cidade
;
 cod_cidade | cod_estado |    cidade    | cod_ibge | cod_estado |    cidade    |  ibge  
------------+------------+--------------+----------+------------+--------------+--------
          1 |          1 | Porto Alegre |        1 |          1 | Porto Alegre | 220000
            |            |              |        2 |          2 | são Paulo    | 330000
(2 rows)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...