Ir para conteúdo

POWERED BY:

Arquivado

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

Foccos

Fazer update em Tabela

Recommended Posts

Estou com uma dúvida em montar o sql de Update. Tenho a tabela proprietario com um campo id_pessoa e eu preciso atualizar o campo nome_pessoa dessa tabela proprietario buscando esse nome da tabela pessoa utilizando o ID. Montei o SQL mas não consigo terminar ...

 

Proprietario Pessoa

 

id_pessoa id

nome_pessoa nome

UPDATE proprietario SET proprietario.nome_pessoa = pessoa.nome WHERE proprietario.id_pessoa = pessoa.id 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua sql está errada pq aparentemente vc esta repetindo
a coluna "nome" desnecessariamente..

 

ficaria mais facil t ajudar se vc explicasse melhor como essas tabelas estão relacionadas, enfim..

 

vamos supor q, nessa modelagem q vc postou, id_pessoa seja chave estrangeira

referindo-se ao id da tabela pessoa? seria isso?

 

então digamos que o id 1 da tabela pessoa tem o nome 'Fernando'..
para recuperar o nome 'Fernando' vc pode montar 1 consulta assim:

select pessoa.nome, pessoa.id, proprietario.id_pessoa
from pessoa
join proprietario
where proprietario.id_pessoa=pessoa.id

em "nome" vc deverá obter 'Fernando', até ai ok?

repare q os "ids" tb serão os mesmos


agora sua logica de update está errada pq vc está dizendo:

 

atualize tabela proprietario set nome_pessoa='Fernando' (ou seja: pessoa.nome) where etc..

 

acontece q o nome é o mesmo, aí está o furo da lógica, está entendendo?
sugiro que utilize a forma normal correta, assim, simplesmente:

update pessoa set nome='Luis' where id=1;

vc verá que 'Fernando' passa a ser 'Luis', ok?
ai sim, p/ recuperar esse nome atualizado acione novamente a consulta

select pessoa.nome, pessoa.id, proprietario.id_pessoa
from pessoa
join proprietario
where proprietario.id_pessoa=pessoa.id

que vc verá q o nome passa a ser 'Luis' corretamente, ok?

 

1 outra lógica: pense na tabela q tem a chave primária como uma "tabela mãe"..
a tabela q tem a chave estrangeira como 1 "tabela filha";


se vc alterar a mãe, vc irá alterar também a filha, esse é o conceito por trás das chaves, ok?
bom, espero ter ajudado.. tente ai e qqer coisa retorne..

Compartilhar este post


Link para o post
Compartilhar em outros sites

A modelagem é isso mesmo, o valor de proprietario.id_pessoa é o mesmo que pessoa.id , e o que eu preciso é pegar o nome que está em pessoa.nome e jogar em proprietario.nome_pessoa, esse campo está vazio atualmente ... Realizei uma query e ficou assim:

 

$sql = 'select tb_pessoas.nome, tb_pessoas.id, proprietario.id_prop from tb_pessoas join proprietario where proprietario.id_prop=tb_pessoas.id';
$res = mysql_query($sql);
$num = mysql_num_rows($res);

Ele retornou os dados corretamente, agora preciso pegar o valor que está em tb_pessoas.nome e inserir em proprietario.nome_pessoa, algo parecido com isso:

 

Update proprietario set nome_pessoa = tb_pessoas.nome where proprietario.id_prop = tb_pessoas.id; 

Compartilhar este post


Link para o post
Compartilhar em outros sites


UPDATE proprietario pro INNER JOIN pessoa pes ON pro.id_pessoa = pes.id SET pro.nome_pessoa = pes.nome

 

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.