Foccos 6 Denunciar post Postado Março 20, 2014 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
Fernando C 128 Denunciar post Postado Março 21, 2014 sua sql está errada pq aparentemente vc esta repetindoa 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
Foccos 6 Denunciar post Postado Março 21, 2014 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
Foccos 6 Denunciar post Postado Março 24, 2014 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