BlacKK 0 Denunciar post Postado Agosto 30, 2010 Caros amigos, sou iniciante em MySQL e tenho está dúvida, já tentei de diversas maneiras. Enfim, o código em estudo é este: UPDATE `mod` SET `mod.forumid` = `thread.forumid` WHERE `mod.threadid` = `thread.threadid` SELECT * FROM `mod`; Para exemplificar: Não estou obtendo resultados, e não sei onde errei. Peço a ajuda de vocês. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 30, 2010 UPDATE `mod`,thread SET `mod.forumid` = `thread.forumid` WHERE `mod.threadid` = `thread.threadid` Compartilhar este post Link para o post Compartilhar em outros sites
BlacKK 0 Denunciar post Postado Agosto 30, 2010 Obrigado pela ajuda, giesta. Porém não funcionou. Quando executo no DB geral, informa que não há tabela selecionada. Quando executo na tabela de destino (mod), diz que não existe a coluna `mod.forumid`. Tentei o código: UPDATE `mod`,`thread` SET `forumid` = `forumid` WHERE `threadid` = `threadid`E lá informa que os campos são ambiguos. Mas não são iguais o "forumid". Testei este que funciona para testar a existencia de campos iguais: SELECT * FROM mod WHERE EXISTS (select * from thread where mod.threadid = thread.threadid and mod.forumid = thread.forumid); No meu caso, eu quero que ele atualize (altere para os valores que estão na tabela "thread"). Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 31, 2010 Se você utilizar o codigo q eu postei e nao o seu (q sao diferentes), você vai ver q vai funcionar , desde q você jah esteja no banco correto (USE banco_de_dados_onde_estao_as_tabelas_mod_e_thread) alem disso quando o mysql diz q o campo eh ambiguo ele quer dizer q ha dois campos com o memso nome em tabelas distintas. Compartilhar este post Link para o post Compartilhar em outros sites
BlacKK 0 Denunciar post Postado Agosto 31, 2010 Mais uma vez obrigado. No entanto, esqueci de adicionar uma informação importante. A atualização servirá para corrigir campos que não apresentam igualdade com o da outra tabela. Assim, se em "mod" apresentar X e em "thread" apresentar Y, prevalecerá Y, sendo ela a soberana. Dependemos de colocar uma condição: serem distintos para atualizar esse campo em divergencia. Porém com esse código não consigo que ele atualize com os valores que são diferentes; os que são iguais permanecem. Tentei outra forma, e sem sucesso: UPDATE `mod` SET `mod.forumid` = `thread.forumid` WHERE `mod.threadid` = `thread.threadid` AND `mod.forumid` != `thread.forumid` Complicado, já tentei de tudo. =/ RESOLVIDO ! Código da solução: UPDATE mod,thread SET mod.forumid = thread.forumid WHERE mod.threadid = thread.threadid AND mod.forumid != thread.forumidAquelas aspas estavam atrapalhando hehe.Obs.: uso PHPMyAdmin. Muito obrigado ao companheiro giesta pela colaboração. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 31, 2010 pra começar, pra fazer update as DUAS tabelas tem q participar do update entao eh UPDATE mod, thread segundo " != " nao existe no mysql sendo assim UPDATE `mod`, thread SET `mod.forumid` = `thread.forumid` WHERE `mod.threadid` = `thread.threadid` AND `mod.forumid` <> `thread.forumid` Compartilhar este post Link para o post Compartilhar em outros sites