Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在连接表时,如何区分这两个ID请求?_Sql_Sqlite - Fatal编程技术网

Sql 在连接表时,如何区分这两个ID请求?

Sql 在连接表时,如何区分这两个ID请求?,sql,sqlite,Sql,Sqlite,这里没有。我有一个足球比赛数据库,我正试图用它来学习/练习SQL 在一个表(称为“Match”)中有比赛api id、日期、主场团队api id、客场团队api id、主场团队目标、客场团队目标。 在另一个表(称为“团队”)中有团队api id、团队名称 现在我正在尝试做一个查询,以显示比赛ID、日期、主队名称和客队名称 SELECT M.match_api_id, M.date, T.team_long_name, T.team_long_name FROM Match M JOIN Team

这里没有。我有一个足球比赛数据库,我正试图用它来学习/练习SQL

在一个表(称为“Match”)中有比赛api id、日期、主场团队api id、客场团队api id、主场团队目标、客场团队目标。 在另一个表(称为“团队”)中有团队api id、团队名称

现在我正在尝试做一个查询,以显示比赛ID、日期、主队名称和客队名称

SELECT M.match_api_id, M.date, T.team_long_name, T.team_long_name
FROM Match M
JOIN Team T ON (M.home_team_api_id = T.team_api_id)
JOIN Team T ON (M.away_team_api_id = T.team_api_id)
LIMIT 10

当我只使用一个join(第一个)来显示主队的名字时,这个代码就起作用了。但是,当我添加第二个联接时,它会给我一个不明确的列名错误。如何更改此代码,以便同时显示客场球队的名称?

您需要不同的表格别名。否则
T
不明确:

SELECT M.match_api_id, M.date, TH.team_long_name, TA.team_long_name
FROM Match M JOIN 
     Team TH
     ON M.home_team_api_id = TH.team_api_id JOIN
     Team TA
     ON M.away_team_api_id = TA.team_api_id;
LIMIT 10

太棒了,这完全有道理。谢谢。现在,作为后续,假设我查询的是11名球员的名字,而不是2名球队的名字。这是否需要11个不同的联接,每个联接使用不同的表别名?这是我当前查询设置的屏幕截图。正如你所看到的,它可以运行,但我想知道是否有更有效的方法来做到这一点?@fbnhost1。如果您有一个断开的数据模型,将玩家放入单独的列而不是单独的行中,则只需要11个联接。