Jump to content
Marcelo Pereira da Costa

Como alterar a coluna, já existente, de uma tabela tendo como base o resultado de um select desta mesma tabela

Recommended Posts

Boa noite

Gostaria de uma ajuda. Eu tenho uma tabela em que preciso inserir o resultado de um select em um campo, já existente, desta mesma tabela.

 

- O nome da tabela é projeto.

= Eu tenho os campos na tabela: Id_servidor, Matricula e Senha.

- Antes de realizar a inserção eu preciso fazer uma concatenação do Id_servidor  com o campo Matricula truncado, que é o seguinte comando: (SELECT CONCAT(s.Id_servidor, substring(s.Matricula, 1, 3)) FROM projeto s;)

- E agora preciso inserir o resultado do select descrito acima no campo Senha da mesma tabela chamada projeto.

Como consigo fazer isso?

Obrigado desde já.

Share this post


Link to post
Share on other sites

Tente assim

 

UPDATE projeto p1
INNER JOIN (SELECT CONCAT(Id_servidor, substring(Matricula, 1, 3)) as nova_senha,Id_servidor FROM projeto) x1
ON p1.Id_servidor = x1.Id_servidor
SET p1.senha = x1.nova_senha

 

Share this post


Link to post
Share on other sites
54 minutos atrás, kim.y disse:

Tente assim

 


UPDATE projeto p1
INNER JOIN (SELECT CONCAT(Id_servidor, substring(Matricula, 1, 3)) as nova_senha,Id_servidor FROM projeto) x1
ON p1.Id_servidor = x1.Id_servidor
SET p1.senha = x1.nova_senha

 

Funcionou perfeitamente.

 

Mas ultima pergunta,.

 

Será que este comando ficará pesado (não otimizado) para uma tabela com 700.000 registros?

Share this post


Link to post
Share on other sites
27 minutos atrás, Marcelo Pereira da Costa disse:

Funcionou perfeitamente.

 

Mas ultima pergunta,.

 

Será que este comando ficará pesado (não otimizado) para uma tabela com 700.000 registros?

Pra você não ter que dar update em todos os registros sempre que inserir um registro novo você pode usar o where nesse update ou você pode criar uma procedure.

 

Eu não entendo muito bem essa parte de otimização, mas por usar subselect acredito que ficará lento.

Share this post


Link to post
Share on other sites
2 minutos atrás, kim.y disse:

Pra você não ter que dar update em todos os registros sempre que inserir um registro novo você pode usar o where nesse update ou você pode criar uma procedure.

 

Eu não entendo muito bem essa parte de otimização, mas por usar subselect acredito que ficará lento.

Muito obrigado pela resposta, farei alguns testes para ver a velocidade.

Eu terei que fazer este UPDATE em todos os registros, porque será um campo de uma chave primaria, porque existem campos que podem ser idênticos, o que irá comprometer as buscas de informações na tabela.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By reytlersouza
      Não consigo passar variável obtida por consulta no banco no value de uma TAG <option> "<option value="<?php $item['id_eq']?>">"
       
      O que está errado no meu código que ele não passa o valor de value no $_GET nem no $_POST?

       
      <?php
          echo $_GET['equi1'];
      ?>
      <form method="GET">   
          <select name="equi1" class="form-control">
              <?php
              require 'conn.php';
              $sql = $pdo->prepare("SELECT * FROM equipamento WHERE 1");
              $sql->execute();
              if($sql->rowCount() > 0) {
              foreach($sql->fetchAll() as $item) {
                                                                      
              ?>
              <option value="<?php $item['id_eq'];?>"><?php echo $item['nome'];?></option>
              <?php
                  }
                  }
                  ?>
          </select>
          <input type="submit" value="Salvar"/>
      </form>
    • By brunoogm
      Pessoal tenho uma tabela no php cujo resultado do select vindo do bd vem no seguinte formato:
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Bacon Cheddar                          1          60.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Chicken Club Sandwich            1          45.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Philly Cheese Steak                   1          50.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Smoke House                             1          55.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Stream Miller                              1          35.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      E eu gostaria de fazer um select para que nao repita os dados iguais e que a tabela viesse assim:
       
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                                      Bacon Cheddar                          1           60.00
                                                                                                                                                      Chicken Club Sandwich           1            45.00
      26    46        15/05/2019 13:57:25         Dinheiro                  Pendente                           Philly Cheese Steak                   1            50.00
                                                                                                                                                      Smoke House                             1            55.00
                                                                                                                                                      Stream Miller                              1            35.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      Alguem pode me ajudar, qual seria a melhor forma de fazer ?

      Essa tabela é gerada com um while no php entao se alguem saber uma outra maneira de montar isso aceito dicas.
       
      php: 
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      echo "<tr role='row' class='odd'>";
                                                      echo "<td class='sorting_1'>" .$resultado['CodigoComanda']. "</td>";
                                                      echo "<td>" .$resultado['Nome']."</td>";
                                                      echo "<td>" .$resultado['Quantidade']."</td>";
                                                      echo "<td>" .$resultado['Preco']."</td>";
                                                      echo "<td>" .$resultado['Metodos']."</td>";
                                                      echo "<td>" .$resultado['DataPedido']."</td>";
                                                      echo "<td>" .$resultado['Situacao']."</td>";
      echo "</tr>";
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      vlw pessoal
       
    • By brunoogm
      Pessoal tenho uma tabela no php cujo resultado do select vindo do bd vem no seguinte formato:
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Bacon Cheddar                          160.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Chicken Club Sandwich            145.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Philly Cheese Steak                   150.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Smoke House                             155.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Stream Miller                              135.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      E eu gostaria de fazer um select para que nao repita os dados iguais e que a tabela viesse assim:
       
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                 46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Bacon Cheddar                          160.00
                                                                                                                                                      Chicken Club Sandwich            145.00
                                                                                                                                                      Philly Cheese Steak                   150.00
       Smoke House                             155.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Stream Miller                              135.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
    • By alison.com
      Olá,
      Preciso "dar um tab" após selecionar o produto em um select.
      Por ex:
      <select name="produto" >
                    <option value="1"> Produto 1  </option>
                    <option value="2"> Produto 2  </option>
                    <option value="3"> Produto 3  </option>
      </select>
      <input type="text" name="qtd"  />
       
      Ao selecionar o produto, automaticamente já passa para o campo qtd para eu colocar qtd desejada.
       
      Como faço isso?
      Já pesquisei bastante mas não encontrei a solução.
       
      Desde já, agradeço a atenção.
    • By dutopfave
      Galera, tenho um cadastro com ajax, até ai blz tava funcionando, so que quis fazer uma verificação se o email ja existi não, se ja existe ai seria como erro, caso ao contrario seria success e cadastrava normal, so não ta indo dps q fiz isso não sei oq é, segue codigo Ajax e PHP:
       
      Ajax:
       
      $(document).ready(function(e) { $("form[ajax=cadastro]").submit(function(e) { e.preventDefault(); var form_data = $(this).serialize(); var form_method = $(this).attr("method").toUpperCase(); $.ajax({ url: 'salvar_cadastro.php', type: form_method, data: form_data, cache: false, dataType: 'json', success: function(data){ if(data == 'true'){ window.location = 'cadastro.php?modal=ok'; }else{ window.location = 'cadastro.php?modal=error'; } }, }); }); });  
       
      PHP (salvar_cadastro.php):
       
      <?php require 'Connections/config.php'; date_default_timezone_set('America/Sao_Paulo'); // INICIO VERIFICAR SE EMAIL JÁ EXISTE $email_verificar = addslashes($_POST['email']); $Verifica_Email = $pdo->prepare("SELECT email FROM cad_administracao WHERE email = :email"); $Verifica_Email->bindValue(":email", $email_verificar); $Verifica_Email->execute(); if($Verifica_Email->rowCount() > 0){ $data = array("success" => false); echo json_encode($data); }else{ // FIM VERIFICAR SE EMAIL JA EXISTE $nome = addslashes($_POST['nome']); $sobrenome = addslashes($_POST['sobrenome']); $email = addslashes($_POST['email']); $cpf_cnpj = addslashes($_POST['cpf_cnpj']); $pessoa = addslashes($_POST['pessoa']); $sexo = addslashes($_POST['sexo']); $telefone = addslashes($_POST['telefone']); $endereco = addslashes($_POST['endereco']); $numero = addslashes($_POST['numero']); $complemento = addslashes($_POST['complemento']); $cidade = addslashes($_POST['cidade']); $bairro = addslashes($_POST['bairro']); $cep = addslashes($_POST['cep']); $estado = addslashes($_POST['estado']); $como_conheceu = addslashes($_POST['como_conheceu']); $foto = addslashes($_POST['foto']); $login = addslashes($_POST['login']); $senha = addslashes(md5($_POST['senha'])); $status = addslashes($_POST['status']); $active = addslashes($_POST['active']); $data = addslashes(date('Y-m-d H:i:s')); $Inserir = $pdo->prepare("INSERT INTO cad_administracao (nome, sobrenome, email, cpf_cnpj, pessoa, sexo, telefone, endereco, numero, complemento, cidade, bairro, cep, estado, como_conheceu, foto, login, senha, status, active, data) VALUES (:nome, :sobrenome, :email, :cpf_cnpj, :pessoa, :sexo, :telefone, :endereco, :numero, :complemento, :cidade, :bairro, :cep, :estado, :como_conheceu, :foto, :login, :senha, :status, :active, :data)"); $Inserir->bindValue(":nome", $nome); $Inserir->bindValue(":sobrenome", $sobrenome); $Inserir->bindValue(":email", $email); $Inserir->bindValue(":cpf_cnpj", $cpf_cnpj); $Inserir->bindValue(":pessoa", $pessoa); $Inserir->bindValue(":sexo", $sexo); $Inserir->bindValue(":telefone", $telefone); $Inserir->bindValue(":endereco", $endereco); $Inserir->bindValue(":numero", $numero); $Inserir->bindValue(":complemento", $complemento); $Inserir->bindValue(":cidade", $cidade); $Inserir->bindValue(":bairro", $bairro); $Inserir->bindValue(":cep", $cep); $Inserir->bindValue(":estado", $estado); $Inserir->bindValue(":como_conheceu", $como_conheceu); $Inserir->bindValue(":foto", $foto); $Inserir->bindValue(":login", $login); $Inserir->bindValue(":senha", $senha); $Inserir->bindValue(":status", $status); $Inserir->bindValue(":active", $active); $Inserir->bindValue(":data", $data); $Inserir->execute(); $data = array("success" => true); echo json_encode($data); } ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.