Sqlite加入混乱

时间:2015-04-01 21:58:19

标签: sqlite

我的第一个Stackoverflow问题对我来说很容易,我对SQLite不是很有经验。

我有一张足球队的桌子

    CREATE TABLE IF NOT EXISTS teams (
    teamId      INTEGER PRIMARY KEY NOT NULL,
    name        TEXT,
    );

和匹配表

CREATE TABLE IF NOT EXISTS matches (
        matchId     INTEGER PRIMARY KEY NOT NULL,
        homeTeamId  INTEGER,
        awayTeamId  INTEGER,
        );

我正在尝试找出显示匹配列表的SELECT语句,但会用团队名称替换homeTeamId和awayTeamId数字。

我尝试了几种变体,但因为匹配表中的两个字段连接回同一个团队表,我得到语法错误或模糊列错误。

对于一个相当基本的问题感到抱歉,感谢任何帮助。

杰夫

2 个答案:

答案 0 :(得分:1)

试试这个:

select m.matchId, h.name, a.name 
from matches m
inner join teams h on h.teamId = m.homeTeamId
inner join teams a on a.teamId = m.awayTeamId

您尚未发布您尝试过的变体,因此我假设您的问题是由于未使用别名(在我的示例ha中)导致表{{1} }。如果需要连接一个表两次,则必须使用至少一个别名。

答案 1 :(得分:0)

感谢您的快速回复。在我发布问题后大约15分钟我偶然发现了解决方案的典型方式,我的解决方案与您的解决方案完全相同,只是我没有打扰对匹配表的别名。

我认为你的回答有点错误

SELECT m.matchId, h.name, a.name 
FROM matches m
INNER JOIN teams h ON h.teamId = m.homeTeamId
INNER JOIN teams a ON a.teamId = a.awayTeamId
                              -- ^ should be m.awayTeamId

但再次感谢你的帮助!

杰夫