【问题标题】:SQLITE JOIN twice ON same table and same columnSQLITE JOIN 在同一张表和同一列上两次
【发布时间】:2022-01-14 19:56:41
【问题描述】:

夹具

+-----------+-----------+ 
| home_team | away_team |
+-----------+-----------+
| 1         | 2         |
+-----------+-----------+

团队

+------+-----------+
| id   | name      |
+------+-----------+
| 1    | AC Milan  |
+------+-----------+
| 2    | AS Roma   |
+------+-----------+

我有这两个表,我想查询它以便拥有:

(1, 2, AC Milan, AS Roma)

我试过这个:

SELECT fixtures.home_teams, fixtures.away_team, teams.name FROM fixtures JOIN teams ON fixtures.home_team = teams.id JOIN teams ON fixtures.away_team = teams.id

但我不断收到错误消息:

Result: ambiguous column name: teams.name

【问题讨论】:

  • 您需要为除第一个连接之外的所有连接上的表名设置别名。否则,无法判断您引用的是哪个teams.name,因为您的SQL 中不止一个。 (我个人也给第一个起了别名,因为它让我在一年后回到代码时更容易遵循逻辑。)

标签: sqlite join


【解决方案1】:

teams 表的 2 个副本中的每一个都必须有自己的别名,用于限定列的名称:

SELECT f.home_team, t1.name home_team_name, 
       f.away_team, t2.name away_team_name 
FROM fixtures f
JOIN teams t1 ON f.home_team = t1.id 
JOIN teams t2 ON f.away_team = t2.id;

【讨论】: