Jump to content

Question

Vi um tópico aqui parecido mas não entendi a lógica. Então fiquei na dúvida. Estou tentando copiar dados de uma tabela para outra e inserir em um campo um valor.

 

INSERT INTO bancoferramenta.tb_historicoferramentas (codigoferramenta_str, numeroconjunto_int ) SELECT cf.codigoferramenta_str, ncf.numeroconjunto_int FROM bancoferramenta.tb_conjuntoferramentas AS cf,  bancoferramenta.tb_numeroconjuntoferramentas AS ncf WHERE cf.idnumeroconjuntoferramentas_int_fk = ncf.idnumeroconjuntoferramentas_int  AND cf.idnumeroconjuntoferramentas_int_fk = 19 ; 

Funciona de boa. Só que eu preciso inserir a data, entao tentei o seguinte

 

INSERT INTO bancoferramenta.tb_historicoferramentas (codigoferramenta_str, numeroconjunto_int, datacadastro_dt ) VALUES (( SELECT cf.codigoferramenta_str, ncf.numeroconjunto_int FROM bancoferramenta.tb_conjuntoferramentas AS cf,  bancoferramenta.tb_numeroconjuntoferramentas AS ncf WHERE cf.idnumeroconjuntoferramentas_int_fk = ncf.idnumeroconjuntoferramentas_int  AND cf.idnumeroconjuntoferramentas_int_fk = 19), 2017-08-02 ); 

E da o erro  

 

Error Code: 1136. Column count doesn't match value count at row 1

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0
INSERT INTO bancoferramenta.tb_historicoferramentas (codigoferramenta_str, numeroconjunto_int, datacadastro_dt ) VALUES (( SELECT cf.codigoferramenta_str, ncf.numeroconjunto_int, '2018-09-10' as nfc.data FROM bancoferramenta.tb_conjuntoferramentas AS cf,  bancoferramenta.tb_numeroconjuntoferramentas AS ncf WHERE cf.idnumeroconjuntoferramentas_int_fk = ncf.idnumeroconjuntoferramentas_int  AND cf.idnumeroconjuntoferramentas_int_fk = 19)); 

 

Você deve definir o campo inexistente na sub-consulta, pois imagina o seguinte, na sub-consulta que você realiza, você traz:

todos os dados + '2018-09-10'

 

Você deve fazer de uma maneira onde a data venha com cada item da consulta:

 

cf.codigoferramenta_str, ncf.numeroconjunto_int, '2018-09-10'

 

Assim, os campos batem.

 

Espero ter ajudado

  • +1 1

Share this post


Link to post
Share on other sites
  • 0

Deu erro de sintaxe

INSERT INTO bancoferramenta.tb_historicoferramentas (codigoferramenta_str, numeroconjunto_int, datacadastro_dt ) VALUES (( SELECT cf.codigoferramenta_str, ncf.numeroconjunto_int, '2018-09-10' as ncf.datacadastro_dt FROM bancoferramenta.tb_conjuntoferramentas AS cf,  bancoferramenta.tb_numeroconjuntoferramentas AS ncf WHERE cf.idnumeroconjuntoferramentas_int_fk = ncf.idnumeroconjuntoferramentas_int  AND cf.idnumeroconjuntoferramentas_int_fk = 19)); 

Share this post


Link to post
Share on other sites
  • 0

Dê o describe na tabela 

tb_historicoferramentas

 

Depois, poste aqui o resultado 

 

Share this post


Link to post
Share on other sites
  • 0

Obrigado Alisson Zampietro,

 

Consegui

 

INSERT INTO bancoferramenta.tb_historicoferramentas (codigoferramenta_str, numeroconjunto_int, datacadastro_dt ) SELECT cf.codigoferramenta_str, ncf.numeroconjunto_int, NOW() FROM bancoferramenta.tb_conjuntoferramentas AS cf,  bancoferramenta.tb_numeroconjuntoferramentas AS ncf WHERE cf.idnumeroconjuntoferramentas_int_fk = ncf.idnumeroconjuntoferramentas_int  AND cf.idnumeroconjuntoferramentas_int_fk = 19;

 

 

Fica uma receita de bolo para quem quiser (para estudo)

 

CREATE TABLE `tabela1` (
  `idtabela1` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(45) DEFAULT NULL,
  `idade` varchar(45) DEFAULT NULL,
  `data` datetime DEFAULT NULL,
  PRIMARY KEY (`idtabela1`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


CREATE TABLE `tabela2` (
  `idtabela2` int(11) NOT NULL AUTO_INCREMENT,
  `idtabela3_fk` int(11) NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idtabela2`),
  KEY `idtabela3_fk_fk_idx` (`idtabela3_fk`),
  CONSTRAINT `idtabela3_fk_fk` FOREIGN KEY (`idtabela3_fk`) REFERENCES `tabela3` (`idtabela3`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO `tabela2` VALUES (1,3,'PAULO'),(2,3,'JOÃO'),(3,3,'FABIO'),(4,2,'MARIA'),(5,1,'LETICIA');

CREATE TABLE `tabela3` (
  `idtabela3` int(11) NOT NULL AUTO_INCREMENT,
  `idade` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idtabela3`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;



INSERT INTO `tabela3` VALUES (1,'10'),(2,'20'),(3,'30'),(4,'15'),(5,'17');






 

Instrução 

 

INSERT INTO bancoteste.tabela1 (nome, idade, data) SELECT tb2.nome, tb3.idade, NOW() FROM bancoteste.tabela2 AS tb2,  bancoteste.tabela3  AS tb3 WHERE tb2.idtabela3_fk =  tb3.idtabela3  AND tb2.idtabela3_fk = 3;

 

Consulta o nome da tabela 2 e a idade da tabela 3 e a hora é inserida manualmente ( nesse caso, hora atual) e depois inseri tudo na tabela 1 de acordo com a condição (WHERE)

 

Share this post


Link to post
Share on other sites
  • 0

Bacana, era isso que eu iria ver, se o campo era date ou datetime.

 

Beleza mano.

 

Até

  • +1 1

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 Gemenson Miranda
      Oi pessoal, estou com um problema na minha hospedagem LInux do Godaddy, publiquei meu site, fiz o apontamento correto do banco de dados, mas quando acesso a URL o site me exibe HTTP ERROR 500 exibe realizei a configuração do arquivo .htaccess, alterei as permissões para (755), nada disso resolve... A questão e que sempre que comento as informações de apontamento do banco de dados no arquivo index.php o site carrega normalmente, porem sem conexão com o bando mysql, o que me faz pensar que o erro pode esta relacionado ao banco mysql, porem não consigo visualizar o erro por que a tela fica toda branca e não retorna nada, como resolver esse erro ou ao menos exibir qual erro causa ele?? agradeço!
    • By maruoppolo
      Olá, tenho 2 tabelas:
       
      tb_dados: ID - MUSICA
       
      tb_votos: ID - VOTO - RADIO - MUSICA
       
      Preciso fazer uma query que traga as musicas da tb_dados porém ordenando pelo número de votos que ela teve na tb_votos.
       
      Então assim, existem 2 tipos de voto 1 = like e 2 = dislike, cada ver que um usuário vota eu pego qual radio que ele esta ouvindo e salvo no campo radio, o id da musica na tb_dados e salvo no campo musica da tb_votos e coloco o número 1 para like e 2 para dislike no campo voto.
       
      A query precisa contar quantos likes teve na tv_votos filtrando por radio e mostrando os resultados em ordem decrescente as musicas com mais likes.
       
      A ideia é trazer as 10 musicas com mais like de cada radio
       
      Alguma ideia de como fazer?? Estou enroscado nisso a dias.
    • By Chester1
      oi, eu to tentando mexer com servidores agora no PHP e esta dando um erro muito estranho que quando eu procuro em um programa que acha erros de sintaxe ele me diz que o erro esta no </HTML>    se alguem puder me dizer qual foi o erro que eu cometi eu agradeceria
       

       
      <HTML> <HEAD><TITLE>incluindo no banco de dados</TITLE></HEAD> <body> <BODY bgcolor="#d0d0d0"> <center> <h3>Lanchonete coma bem (voltada para o internauta)</h3> <h1>24horas</h1> <?php $login_digitado=$_POST['login']; $senha=$_POST['senha']; $nome=$_POST['nome']; $email=$_POST['email']; $telefone=$_POST['telefone']; $celular=$_POST['celular']; $endereco=$_POST['endereco']; $complemento=$_POST['complemento']; if ($login_digitado == "" || $senha == "" || $nome =="" || $email == "" || $telefone == "" || $endereco == "" || $complemento == "") { echo "existem(m) campos(s) de preenchimento obrigatorio em branco,<BR> infelizmente tera que voltar para preenche-lo(s)."; echo "<BR><a href=\"cadastro.php\">clique aqui para tentar novamente</a>"; } else { { $link=mysql_connect("localhost", "root", "") or die ("<h1>nao foi possivel conectar !!!</h1> ".mysql_error());  
      obs :estou trabalhando com formularios e servidores
         
         
         
         
      ?>
      </BODY>
      </HTML>
    • By rainbowily
      Sou nova em sql e estou com duvida em como fazer uma consulta:
      Eu tenho uma tabela de produto(id, descricao), cor(id, nome) e produto_cor(id, id_produto, id_cor). Preciso descobrir se tem algum produto que tenhas as cores (1,2,3) respectivamente para não deixar cadastrar outro produto. Alguém poderia me ajudar? Obrigada



    • By DavidPin94
      Boa tarde, estou tentando criar uma validação para saber se o usuário já está cadastrado no meu banco de dados para meu sistema ficar mais organizado, porém quando realizo o teste cadastrando um usuário já cadastrado, o cadastro ocorre sendo que não era para ocorrer
      <?php require_once("conexao.php");?> <?php if (isset($_POST['usuario'])) { $nome = utf8_decode($_POST['usuario']); $senha = utf8_decode($_POST['senha']); $inserir = "INSERT INTO cadastro "; $inserir .= "(usuario, senha) "; $inserir .= "VALUES "; $inserir .= "('$nome', '$senha')"; $query = "SELECT usuario FROM cadastro WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); $query = "SELECT usuario FROM clientes WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); if (mysqli_num_rows($consulta) < 1) { $operacao_inserir = mysqli_query($conecta, $inserir); if (! $operacao_inserir) { die("Erro no banco"); }else header("location: login.php"); }else{ die("Usuário existente!"); } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Cadastrar novo usuário</title> <link rel="stylesheet" type="text/css" href="estilo.css"> </head> <body> <nav> <ul> <li><a href="inicial.php">PÁGINA INICIAL</a></li> <li><a href="quem_somos.php">QUEM SOMOS</a></li> </ul> </nav> <div id="cadastro"> <form method="post" action="cadastro.php"> <label>Digite seu nome de usuário</label> <input type="text" name="usuario" placeholder="Ex: Usuario123" required size="50" minlength="5" maxlength="20" autofocus><br> <label>Digite sua senha</label> <input type="password" name="senha" placeholder="Deve conter mais de 5 caracteres" required size="50" minlength="5" maxlength="20" autofocus><br> <input type="submit" value="Cadastrar" id="enviar" name="enviar"> </form> </div> </body> </html> ,  alguém poderia me ajudar?  Meu código:
×

Important Information

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