Muitas vezes é necessário fazer um insert de dados em uma tabela trazendo resultados de outra na mesma base ou em bases diferentes. Como fazer? Simples:
INSERT INTO banco.tabela-destino (campo1, campo2, campo3...) SELECT campo1,campo2,campo3... FROM banco.tabela-origem;
Atente-se para que os campos estejam na mesma seqüência tanto na instrução INSERT quanto na instrução SELECT pois é seguida a seqüência de campos em ambas as instruções. Também não se esqueça do ponto e vírgula no final da última instrução. Imprescindível.





CODARE de parabéns! Está no meu leitor de feeds…
Só para acrescentar que o mesmo pode ser feito com UPDATE, desde que não da mesma tabela. ;)
Esta é a idéia Diogo, a sequência de INSERT e SELECT pode ser feita dentro da mesma, o que não é possível com o UPDATE.
Obrigado pela visita.
Achei muito bom o insert com select, mas como faço para habilitar o connect em dois db’s diferentes ao mesmo? Pois no meu caso preciso mover dados entre duas tabelas de bancos diferentes.
Rápido e rasteiro uhsuhsuh
Obrigado pela dica!
Silvana,
Temos dois bancos, sendo eles representados por “A” e “B”, o banco “A” será especificado na cláusula “Insert” o banco “B” na cláusula “Select”, conforme código descrito abaixo:
INSERT INTO banco_A.tabela-destino (campo1, campo2, campo3…)
SELECT campo1,campo2,campo3… FROM banco_B.tabela-origem;
sera que assim nao funciona?
INSERT INTO visitas (
`idvisitas` ,
`iddmeu` ,
`iddamigo` ,
`ddatehora` ,
`ip`
)
VALUES (
NULL , ’7′, ’90′, ’2011-03-22 08:22:39′, ’1′
)
WHERE ip !=’1′);
Não, não funciona frentis, insert não aceita WHERE clause
Olá pessoal, eu tenho uma dúvida, toda vez presciso fazer duas consultas uma para verificar se a registros, se tiver eu coloco um if no php e se caso der zero dou um insert ou dou um update. Tem com colocar tudo em uma query?
Olá
Preciso selecionar todos os dados de uma tabela e inserir todos estes dados noutra tabela, no memso banco. Só consegui inserir uma linha com os dados.
Se algúem poder me ajudar !
Obrigado,
Arilson
Seguem os códigos.
$query="SELECT limpas.* FROM limpas WHERE lrg ='$tombo_rg' ";
$resultado = mysql_query($query) or die(mysql_error());
$cont= mysql_num_rows($resultado) or die (mysql_error());
while($row = mysql_fetch_array($resultado))
{
$lrg= $row["lrg"];
$ocodata =$row["ocodata"];
$assunto =$row["assunto"];
$historico= $row["historico"];
}
$sql = "INSERT INTO tombolimpas (lrg, ocodata, assunto,historico
)
VALUES ('$lrg', '$ocodata', '$assunto', '$historico' )";
$result = mysql_query($sql) or die(mysql_error());
Boa Tarde
Utilizei a idéia do post e deu certo.
Troquei todo alquele código já postado por este:
$sql = "INSERT INTO tombolimpas (lrg, ocodata, assunto, historico) SELECT lrg, ocodata, assunto, historico FROM limpas WHERE lrg = '$tombo_rg'";
$result = mysql_query($sql) or die(mysql_error());
Boa Tarde, estou iniciando em PHP e estou com um problema…
Exemplo:
tabela entrada;
id_codigo
valor1
tabela saida;
id_codigo_saida
valor2
tabela situacao;
total
preciso fazer o total ser a subtração do valor1 – valor2
nao sei como fazer.
alguem pode me ajudar?
Se está fazendo com PHP, basta trazer os valores dos campos, subtraí-los e depois inserir na tabela nova. Simples assim.
Abraços
ótima dica, testei usando o Heidi e funcionou perfeitamente. Acredito que rodando dentro do PHPMYADMIN também funcione… mas como vou fazer isso no código PHP, pois pelo que sei posso conectar apenas em um banco de cada vez.
Me compreende?
Abraço!
Olá Carlos,
Você pode se conectar via PHP a quantos DB’s quiser ao mesmo tempo. Se você observar a função
mysql_connectdo PHP, poderá ver que o primeiro parâmetro é o servidor. Trocando este parâmetro poderá fazer a conexão.Alguns exemplos podem ser vistos em:
http://bytes.com/topic/php/answers/721490-connecting-two-mysql-tables-different-databases
Abs
Paulino
Olhei o link que me mandou e achei que iria dar certo, mas não deu não.
Quero selecionar os dados de uma tabela e passar para outra tabela, porém elas não estão na mesma base de dados, são dois bancos mysql.
tenho no meu PHP a query abaixo, sendo que a tabelaA esta em um banco chamado “dados” a tabelaB está em um banco chamado de “antigo”
$query=”INSERT INTO tabelaA (campo1, campo2, campo3…)
SELECT campo1,campo2,campo3… FROM tabelaB”
mysql_query($query, ?) // passo quais das conexões aqui a que conecta no primeiro ou no segundo banco. Qualquer uma que passo da erro.
Grato amigo
Acho que vc esqueceu de dizer os nomes dos bancos antes das tabelas.
tabelaA.bancoX
Verifique