2016-06-15 48 views
0

我有2个表:SQL查询不检索任何

Equipas:
codEquipa(这是表的primay键)
nomeEquipa
logoEquipa
estadioEquipa
cidadeEquipa

JOGO:
codJogo(这是表的primay键)
codEquipaCasa (这是codEquipa外键)
codEquipaFora (这是codEquipa外键)
dataJogo


并且有一个查询:*

SELECT Equipa.nomeEquipa AS "Casa", 
     Equipa.nomeEquipa AS "Visitante" 
FROM Equipa 
JOIN Jogo AS j1 ON j1.codEquipaCasa=Equipa.codEquipa 
JOIN Jogo AS j2 ON j2.codEquipaFora=Equipa.codEquipa 

的事情是,我在JOGO与existant外键一个注册表,但查询不检索我什么。

在此先感谢您提供的任何帮助。 让我知道你是否需要更多信息。

+0

基于sql语法删除了Sql-Server标记。 –

+0

如果可能的话放一些示例数据 – Avi

+0

为什么你在查询的select部分有2个相同的列(Equipa.nomeEquipa)?你尝试过LEFT JOIN吗? –

回答

2

你想joinEquipa两次Jogo,而不是周围的其他方式:

SELECT ec.nomeEquipa AS "Casa", 
     ef.nomeEquipa AS "Visitante" 
FROM Jogo j JOIN 
    Equipa ec 
    ON j.codEquipaCasa = ec.codEquipa JOIN 
    Equipa ef 
    ON j.codEquipaFora = ef.codEquipa; 

如果存在缺少值,那么你可能想LEFT JOIN

+0

谢谢,这使得它通过。并且知道我明白这个JOIN语句 –

1

它看起来像Equipa是你试图加入两次,而不是Jogo。 如果我理解正确你的问题,试试这个:

SELECT e1.nomeEquipa AS "Casa", 
     e2.nomeEquipa AS "Visitante" 
FROM Jogo j 
JOIN Equipa AS e1 ON j.codEquipaCasa=e1.codEquipa 
JOIN Equipa AS e2 ON j.codEquipaFora=e2.codEquipa