Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BlacKK

[Resolvido] Atualizar coluna de uma tabela igual a de outra tabel

Recommended Posts

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:

Imagem Postada

 

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

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

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

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.forumid
Aquelas 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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.