Ir para conteúdo

Arquivado

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

Célio A.

Query com tabelas relacionadas

Recommended Posts

Estou tendo dificuldades para exibir dados de tabelas relacionadas, estou tentando um exercicio com a seguinte estrutura.

 

Na tabela pessoa eu tenho os seguintes campos:
id
nome
cidade_fk (referencia cidade id)

Na tabela cidade:
id
cidade

 

Bem... Isso é o que eu sei fazer, exibir os resultados de uma tabela

<?php
if(file_exists("conectar.php")) {
    require "conectar.php";        
} else {
    echo "Arquivo conectar.php nao foi encontrado";
    exit;
}

//seleciona o banco de dados
mysql_select_db("$banco", $conexao);

$query_lista = mysql_query("SELECT * FROM pessoa ORDER BY id");

while($lista = mysql_fetch_array($query_lista)) {
echo $lista[id]." ".$lista[nome];
}
?>

O que preciso é exibir o id, nome (da tabela pessoas) e a cidade (tabela cidade).

 

OBS. Consigo fazer a query com SQL, mas não com o PHP. Qualquer ajuda sera bem vinda.

Compartilhar este post


Link para o post
Compartilhar em outros sites
$query_lista = mysql_query("SELECT p.id, p.nome, c.cidade FROM pessoa p INNER JOIN cidade c ON p.cidade_fk = c.id ORDER BY p.id");

while($lista = mysql_fetch_array($query_lista)) {
echo $lista[id]." ".$lista[nome]." ".$lista[cidade];
}

o básico em relacionamento de tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você consegue fazer a query com SQL, apenas a insira no lugar da sua query no PHP.

 

Outro detalhe, não use as funções mysql_*. Migre para PDO ou MySQLi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais uma pergunta, se um atributo tiver o mesmo nome em tabelas diferentes, consigo exibir o resultado corretamente ou os nomes sempre tem que ser diferente?

 

Ex:

Se na tabela cidade o atributo 'cidade' tambem fosse 'nome', entao teria 'nome' da tabela pessoa e 'nome' da tabela cidade. Neste caso como exibo no array?

Compartilhar este post


Link para o post
Compartilhar em outros sites

já respondido no post #2,

mas use tabela.coluna

Compartilhar este post


Link para o post
Compartilhar em outros sites

no array?

Minha pergunta é se duas colunas de tabelas diferentes tiver o mesmo nome, como devo exibir

 

Seria algo assim?

echo $lista[id]." ".$lista[p.nome]." ".$lista[c.nome];

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize um alias e então use-o:

$sql = 'SELECT pessoa.nome AS pessoa, cidade.nome AS cidade....';
O token AS indica que estará definindo um alias, então não tem problema em utilizar os nomes das tabelas.

echo $row['pessoa'];
echo $row['cidade'];
Obs.: Ative a exibição de erros, seu código/sintaxe possui alguns erros triviais.

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.