Pular para o conteúdo
  • Este tópico contém 7 respostas, 2 vozes e foi atualizado pela última vez 16 anos atrás por ericclauber.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #84413
    ericclauber
    Participante

      Bom dia…

      Estou tentado fazer um update do campo ‘codcidade’ na “tabala1”, cujo o
      o municipio da “tabela1” seja = ‘nomecidade’ da “tabela2”

      segue select que me trouxe correto.

      select pcclient.codcli,pcclient.cliente,pcclient.codcidade,pcclient.municent,
      pccidade.nomecidade from pcclient,pccidade where
      pcclient.municent=pccidade.nomecidade

      codcli- cliente -codcidade – tab1.municent- tab2.nomecidade
      23484 ELIZAN PEREIRA – 7 – FORTALEZA – FORTALEZA 22934 RAIMUNDO CAZ – nulo – CASCAVEL – CASCAVEL

      sendo que o update tem que reconhecer o ‘codcidade’ pelo ‘nomecidade’ da “tabela2” e que seja = ‘municipio’ da “tabela1” para atualizar o campo ‘codcidade’ da “tabela1”

      geralemte os selects dao certo, mas quando faço o update me enrolo… hehehe.

      Agradeço a ajuda.

      #84416
      Ishii
      Participante

        Olá,

        Segue a receita básica:


        update tabela1
        set coluna1 = (select coluna2 from tabela2 where chave2=chave1)
        where chave1= (select chave2 from tabela2)

        []s Ishii

        #84431
        ericclauber
        Participante

          Deu certo, como abaixo, muito obrigado!

          update pcclient set codcidade=(select pccidade.codcidade from pccidade where pcclient.municent=pccidade.nomecidade)

          Eric Clauber

          #84584
          ericclauber
          Participante

            Bom dia… precisei fazer novamente o mesmo update acima, e agora nao esta fazendo, ocorre um erro abaixo.

            ORA-01427 single-row subquer returns more than one row

            Cause: The outer query must use one of yhe keywords ANY, ALL, IN OR NOT IN to specify values to compare because the subquery returned more than one row.

            Action: Use ANY, ALL, IN OR NOT IN to specify which values to compare or reword the query so only one row is retrieved.

            nao entendi por que isso, antes deu, e agora nao. Espero que me ajudem.

            #84587
            Ishii
            Participante

              Olá,

              Provavelmente na query:
              select pccidade.codcidade from pccidade where pcclient.municent=pccidade.nomecidade
              deve estar retornando mais linhas.

              Veja se com o primeiro exemplo que passei funciona.

              []s Ishii

              #84683
              ericclauber
              Participante

                Rapaz… ainda nao deu certo, tentei varias formas e nada, mesmo erro.

                Voce tem alguma carta na manga? rsrs.

                #84684
                Ishii
                Participante

                  Olá

                  Rode apenas o select e veja o retorno. Em algum caso deve estar retornando mais linhas…

                  []s Ishii

                  #84702
                  ericclauber
                  Participante

                    Enfim deu certo… realmente estava retornando mais linhas.

                    Há outros estados que tem o mesmo nome das cidades, assim apenas acrescentei a condiçao que fizesse somente UF=’CE’

                    update pcclient set codcidade=(select pccidade.codcidade from pccidade where pcclient.municent=pccidade.nomecidade and pccidade.uf=’CE’)

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.
                  plugins premium WordPress