Jump to content
fil79

join tabelas em mais de um campo

Recommended Posts

fil79

Boas

tenho a tabela rotas com os campos id,local1 e local2. Depois tenho a tabela locais com o id e o nome

Basicamente quero fazer uma listagem à tabela rotas, que me devolvia o nome do local 1 e 2.

Para tal tenho de fazer o join em dois campos da rotas. Qual a melhor maneira de fazer esta query?

Desde já agradeço

Edited by fil79

MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
HappyHippyHippo
select *
 from rotas as r inner join locais as l1
                         on r.local1 = l1.id
                 inner join locais as l2
                         on r.local2 = l2.id

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
fil79

é isso, obrigado. Agora uma outra questão, esse sql devolve-me os dois campos "nome" (origem e destino), sem distinção, de alguma forma vou ter de os distinguir para depois os listar.


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
HappyHippyHippo
SELECT l1.nome as l1_nome,
      l2.nome as l2_nome
 FROM rotas AS r INNER JOIN locais AS l1
                         ON r.local1 = l1.id
                 INNER JOIN locais AS l2
                         ON r.local2 = l2.id


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
pmg

Especifica as colunas que queres que o query devolva (em vez do *) e dá-lhes nomes mais apropriados

select tabela1.coluna2 as nome_apropriado, tabela3.coluna2 as outro_nome ...


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
fil79

$query="    SELECT lug1.name as origem,lug2.name as destino
           FROM posicao AS p
           INNER JOIN lugares AS lug1
	    ON p.lugar_1 = lug1.id
	    INNER JOIN lugares AS lug2
	    ON p.lugar_2 = lug2.id


                        ";

Perfeito, muito obrigado


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
fil79

agora estou com um novo problema

dentro da tabela locais existe um campo distrito, eu queria listar todos os registos dentro de um determinado distrito

SELECT lug1.distrito_id,p.preco,lug1.name as origem,lug2.name as destino
		FROM posicao AS p
   	 INNER JOIN lugares AS lug1
		ON p.lugar_1 = lug1.id
		INNER JOIN lugares AS lug2
		ON p.lugar_2 = lug2.id
		WHERE lug1.distrito_id=11

Creio que aquele WHERE deveria fazer esse filtro, mas a verdade é que devolve todos os registos da tabela

Edited by fil79

MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
HappyHippyHippo

dá um contra-axemplo (registos das tabelas que resultado que não deveria aparecer)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
fil79

não sei se estou a perceber! Se eu por exemplo fizer um select à tabela lugares onde o id é 11, devolve 1000 registos

se usar a query acima devolve 3000!


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
HappyHippyHippo

o que impede de existir mais do que um registo na tabela "posicao" com a mesma referência para o mesmo local ?

pelos visto existem 3 para cada, até ...


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
fil79

pois foi o que pensei, mas está a devolver 3 registos triplicados no sql com o join. Mas parece de facto haver um problema nas tabelas que tenho de verificar


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.