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 Camilavip
      Boa noite a todos, estou tendo um probleminha em gravar a senha criptografada, na verdade editar, pois quando gravo vai certo, mas na edição não está dando certo.
      A baixo quando cadastro o cliente é assim, e está indo perfeito.
       
      $nome = $_POST['nome']; $email = $_POST['email']; $login = $_POST['login']; $senha = sha1($_POST['senha']); Mas na hora da edição como está um pouco diferente estou tentando colocar esse sha1 em todo lugar e não está dando
      nome='$_POST[nome]', email='$_POST[email]', login='$_POST[login]', senha='$_POST[senha]', Então no de cima no cadastro está ok, mas na edição não sei mais aonde coloco esse sha1 para dar certo ou é burrice minha mesmo,
    • By Sapinn
      Estou trazendo os dados do banco de dados e eles estão vindo com problema na acentuação
      uso o seguinte codigo no php
      <?php
      include_once ‘…/php/conexao.php’;
      header(‘Content-Type: text/html; charset=utf-8’);
      mysqli_query($conn,“SET NAMES ‘utf8’”);
      mysqli_query($conn,‘SET character_set_connection=utf8’);
      mysqli_query($conn,‘SET character_set_client=utf8’);
      mysqli_query($conn,‘SET character_set_results=utf8’);
      ?>
      E no html
      Mesmo assim as palavras com acento ficam com aquele erro desgraçado com a interrogação
      Alguem me ajuda ai
    • By Sapinn
      Tenho um form que pergunto o nome, sobrenome, email, idade e telefone de contato. Como faço para verificar se o email digitado já foi cadastrado e retorna na mesma pagina uma mensagem caso ele ja existe ou prosseguir para a area do usuario caso ele não exista sem da refresh na página.
    • By Wanderson Moreira
      bom dia, 

      preciso fazer um select e verificar se o ID do usuário logado existe em em uma coluna do banco de dados
      por exemplo

      ID Usuario: 6
      coluna do banco: 1, 3, 5, 16
       
      O problema é que se eu fizer o select com LIKE ele considera o numero 16 como 1 e 6 invés de considerar um numero só, com isso o usuário 6 acaba sendo incluso no select indevidamente
       
      alguém poderia me ajudar?
    • By Diego-SLP
      Boa tarde,
       
      Tenho um while retornando alguns dados do meu banco e gostaria que nessa tabela a ultima linha fosse a soma da coluna, como posso fazer isso ?
       
      Obrigado
×

Important Information

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