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 gust.php
      Prezados, boa noite.
       
      Nunca fiz isso e estou dúvidas.
       
      Tenho as tabelas CATEGORIAS e SUBCATEGORIAS. Os cadastros e relacionamentos estão funcionando perfeitamente, tudo ok aqui.
      Tenho também a tabela PRODUTOS.
       
      Digamos que eu tenha produtos que fazem parte de categorias que não tem subcategoria, e tenho produtos que fazem parte de subcategorias de alguma categoria.
       
      Como fazer o relacionamento desses produtos?
       
      Vou relacionar a tabela PRODUTOS com CATEGORIAS e SUBCATEGORIAS ?
      A dúvida surgiu pois um produto pode fazer parte de uma categoria que não tem subcategoria, mas posso ter também produtos que fazem parte de subcategorias de uma categoria.
      E qual a cardinalidade desse relacionamento?
       
      Ja vi gente fazendo o relacionamento só com SUBCATEGORIA, mas e se não existir subcategoria????
       
      produto many to many categoria
      produto many to many subcategoria
       
      produto
      id | produto 
       
      prod_cat
      cat_id | prod_id
       
      categoria
      id | categoria 
       
      subcategoria
      id | categoria 
       
      prod_subcat
      subcat_id | prod_id
       
      Como resolver isso de um forma correta?
    • By danicarla
      Oi gente.. tenho uma tabela de endereços e uso php para fazer dois loops para exibir as cidades e depois os bairros daquela cidade,
      fica algo + ou - assim:
      $a = mysql_query('SELECT nome_cidade FROM tab GROUP BY nome_cidade'); while($b = mysql_fetch_array($b)){ echo $b['nome_cidade'].'<br>'; $c = mysql_query('SELECT nome_bairro FROM tab WHERE nome_cidade='$b[nome_cidade]' GROUP BY nome_bairro'); while($d = mysql_fetch_array($c)){ echo $d['nome_bairro'].'<br>'; } } Alguém sabe se eu consigo fazer isso somente com uma consulta? pra não precisar incluir um loop dentro do outro
    • By Agnosticado
      Olá senhores, estou intrigado com uma coisa: tenho o seguinte código:
      $id_exame = "50296"; $pesquisa = "SELECT motivo, CASE WHEN motivo = 'Intensa superposição celular em mais de 75% de esfregaço' THEN 'A' WHEN motivo = 'Sangue em mais de 75% de esfregaço' THEN 'B' WHEN motivo = 'Artefatos de dessecamento mais de 75% de esfregaço' THEN 'C' ELSE 'TESTE' END AS opcao FROM insatisfatorio WHERE exame_id = '$id_exame' ORDER BY opcao ASC"; $linha = mysql_query($pesquisa); while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){ echo $pesquisa["opcao"]; } Quando executo usando
       
      $linha = mysql_query($pesquisa);
                 while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){
              echo $pesquisa["opcao"];
              echo "<br>";
       
       
      a saída é palavra "TESTE" que o default e não o texto "B" que corresponde a string da chamada do $id_exame = 50296.
       
      O ESQUISITO é que quando executo todo select que está na variável $pesquisa direto no SGBD dá certo e o texto "B" aparece normalmente.
      PQ DIABOS ISSO ACONTECE???
    • 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.
×

Important Information

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