SQL - Duplo INNER JOIN sobre a mesma tabela

Bro840

Power Member
Tenho duas tabelas

Tabela ENCONTROS que guarda os dados sobre jogos de futebol (ID, ID_Competicao, Jornada, Visitado, Visitante, Data)
Tabela EQUIPAS que guarda os dados sobre as equipas (ID, Equipa)

Vi na net mas não resulta, já tentei de tudo...

SELECT ENCONTROS.ID, ENCONTROS.ID_COMPETICAO, ENCONTROS.JORNADA, VISITADO.EQUIPA AS VISITADO, VISITANTE.EQUIPA AS VISITANTE
FROM ENCONTROS
INNER JOIN EQUIPAS as VISITADO ON ENCONTROS.ID_EQUIPA_CASA = VISITADO.ID
INNER JOIN EQUIPAS as VISITANTE ON ENCONTROS.ID_EQUIPA_FORA = VISITANTE.ID
 
Última edição:
Se fizeres 1 INNER JOIN entre as duas tabelas irás ter acesso a todos os dados presentes em ambas as tabelas..

Sinceramente, qual o objectivo? O que queres mostrar?
 
O campo Visitado e Visitante são numeros que correspondem ao ID das esquipas respectivas e cujos os nomes estão guardados na tabela Equipas...
 
Acontece que tenho de fazer dois inner joins porque preciso de saber o nome da equipa visitada e também tenho de saber o nome da equipa visitante.

Estes dois campos Visitado e Visitante na tabela Encontros são IDs, já na tabela Equipas associado ao ID guardo a Equipa e também outras informações como Estádio, Presidente, Treinador etc...

Mas para este caso só que saber o nome, ou seja quero sacar as informações de um dado encontro, Competição, Jornada, "Visitado", "Visitante" etc.
 
Eu estou a fazer um programa em que tenho uma variável que guarda uma informação que é o ID_Competicao, este ID_Competicao indica-me a Época e a Competição em questão, ou seja se é a Primeira Liga ou a Liga espanhola...

Com isto em mente eu através deste ID_Competicao vou à tabela ENCONTROS (ID, ID_COMPETICAO, JORNADA, ID_VISITADO, ID_VISITANTE, DATA).....

..... e faço uma query: "Select * From Encontros Where ID_Competicao = " Variável do programa.... Só que tenho de fazer dois joins, pois o ID_Visitado e o ID_Visitante são números, ou melhor são IDs



Um join consigo eu fazer na boa mas quando faço o segundo, não consigo. Já tentei variações de sintaxes e nada... Nos exemplos da net é exactamente como tenho no primeiro post
 
Última edição:
Demorou mas foi para grande alegria minha e depois de umas poucas horas a fritar o cérebro...

Estou a trabalhar com o access e tem uma ligeiras diferenças como sempre para outras plataformas que usam SQL. Então tudo o que faltava eram uns ()

SELECT ENCONTROS.ID, ENCONTROS.ID_COMPETICAO, ENCONTROS.JORNADA, VISITADO.EQUIPA AS VISITADO, VISITANTE.EQUIPA AS VISITANTE
FROM (ENCONTROS
INNER JOIN EQUIPAS as VISITADO ON ENCONTROS.ID_EQUIPA_CASA = VISITADO.ID)
INNER JOIN EQUIPAS as VISITANTE ON ENCONTROS.ID_EQUIPA_FORA = VISITANTE.ID
 
Só vi agora o tópico e ainda bem que conseguiste. :)

No entanto estive aqui a fazer uma query, um bocado rebuscada mas funcional:

Código:
SELECT t1.equipa as visitante, t2.equipa as visitado 
FROM equipas t1, equipas t2, encontros en
WHERE t1.id = en.visitante and t2.id = en.visitado

Penso que serve o teu propósito.

Abraço
 
Back
Topo