Ir para conteúdo

POWERED BY:

Arquivado

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

japalfalfa

selecionar em duas tabelas

Recommended Posts

Pessoal, boa noite tudo bem?

 

é o seguinte, tenho uma estrutura de tabelas que, resumidamente é assim:

 

tabela cidades:

id

cidade

 

tabela galeria de fotos:

id

id_fotografo

id_cidade

(os demais campos nao sao relevantes)

 

agora o que eu preciso é o seguinte:

uma consulta que, quando abrir a página fotógrafo, mostre em quais cidades ele já fotografou ex: cidade1, cidade2, cidade3, etc

eu queria, em uma consulta só, fazer o seguinte:

 

1º SELECIONAR todos os campos da tabela fotos onde id_fotografo=$id

2º Selecionar o campo cidade da tabela cidade de acordo com o campo id_cidade da tabela fotos

 

ou seja, o fotografo pode ter 'n' fotos em diferentes cidades, e eu quero que a consulta já retorne em um array todas estas cidades...

 

eu tentei com 2 arrays, porém, não consegui ordernar as cidades em ordem alfabética para poder excluir as repetidas... então se alguém tiver alguma idéia quanto a isso também ajudaria em muito..

 

Muito obrigado pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

japalfalfa, para selecionar dados em duas Tabelas relacionadas utilize o INNER JOIN. No seu caso você qer selecionar todas as fotos ref. ao id atribuido na variável $id e ao mesmo pegar as cidades onde esta foto foi tirada. Seria mais ou menos assim:

SELECT * 
FROM
   fotos
       INNER JOIN cidades ON (fotos.id_cidade = cidades.id)
WHERE
   fotos.id = '$id'
ORDER BY
   cidades.cidade

Veja se isso lhe ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Wess tudo bem?

 

obrigado pela ajuda! estou quase lá!

 

consegui efetuar a consulta e vi que funciona perfeitamente por sql

 

mas o que eu queria saber agora é:

meu código está assim:

 

$sql = ("SELECT * FROM fotos INNER JOIN cidades ON (fotos.id_cidade = cidades.id) WHERE fotos.id = '$id' ORDER BY cidades.cidade");
$ok = mysql_query($sql);
while ($dado = mysql_fetch_array($ok)) {
/*Aqui vai um script simples de comparação*/
/* e aqui, caso o script aponte que a cidade ainda não se repetiu, ele mostra a cidade*/
}

 

o que eu quero saber é tipo, coloquei tudo no array "$dado", mas por exemplo, o campo "id" está presente nas duas tabelas... como eu chamo cada uma? através do índice numérico?

 

vlw!

 

------ EDIT ------

 

Oooops

 

acabei de me responder né rsrsrs

 

acertei o script:

 

ficou assim:

 

$sql = ("SELECT * FROM fotos INNER JOIN cidades ON (fotos.id_cidade = cidades.id) WHERE fotos.id = '$id' ORDER BY cidades.cidade"); //aqui ele compara nas duas tabelas, conforme o Wess me explicou
$ok = mysql_query($sql);
while ($dado = mysql_fetch_array($ok)) {
  if ($confere!=$dado[11]){ //aqui eu inicio a variável $confere com o valor do array, este script funciona pois as cidades estão organizadas em ordem alfabética
      echo $dado[11]."<br />"; //se não se repete, exibe a cidade
      $confere = $dado[11]; //atribuo o novo valor para a variável confere, desta forma, evito de ter novas repetições, e se estiver repetido, continua o mesmo valor para a próxima conferência
  }

 

Muito obrigado pela ajuda Wess!

 

Abraços e boa noite para todos

 

----EDIT2----

 

só pra constar um fato muito engraçado (e triste né), minha solução anterior para o mesmo problema (que eu nem tinha conseguido resolver ainda, por sinal) tinha mais de 35 linhas) uahuahauha

pra ver como é importante conhecer todas as funções né =/

 

vlw galera boa noite!

Compartilhar este post


Link para o post
Compartilhar em outros sites

japalfalfa, é isso ai meu caro vivendo e aprendendo. Precisando estamos ai.

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.