我正在尝试使用不同的别名来获取记录,但是它们是相关的。
我正在使用的服务器是WAMP。我已经成功地将项目/脚本连接到PhpMyAdmin数据库,并且可以使用一些查询在我的PHP文件上看到一些记录并成功插入。
但是,当我尝试使用不同的别名获取记录时,出现错误,提示以下内容:“ MySQL说:#1066-不是唯一的表/别名:”团队“” ?
请解释一下发生的情况,因为在数据库中,当我检查这些记录的ID时,它们表明它们已连接/从另一个表中拉出了记录。
以下是我的MySQL查询,其中我尝试更改几次,但每次尝试都没有成功:
SELECT DISTINCT fixtures.fixture_id, fixtures.fixture_date,
fixtures.fixture_time, fixtures.home_teamID,
fixtures.away_teamID, fixtures.comp_id
From fixtures
JOIN teams ON fixtures.home_teamID = teams.team_id
JOIN teams ON fixtures.away_teamID = teams.team_id
JOIN competitions ON fixtures.comp_id = competitions.comp_id
ORDER BY fixture.id ASC
查询中的错误消息指出:
SELECT DISTINCT fixtures.fixture_id, fixtures.fixture_date,
fixtures.fixture_time, fixtures.home_teamID,
fixtures.away_teamID, fixtures.comp_id
From fixtures
JOIN teams ON fixtures.home_teamID = teams.team_id
JOIN teams ON fixtures.away_teamID = teams.team_id
JOIN competitions ON fixtures.comp_id = competitions.comp_id
ORDER BY fixture.id ASC
LIMIT 0, 25
请向我解释我在做什么错,请注意,我是使用PHP和MySQL的该平台的新手。预先感谢。
答案 0 :(得分:0)
您要两次加入“团队”,所以当您提及“团队”时,您并不知道您是指第一支加入home_teamID的团队,还是第二支加入away_teamID的团队。
您可以通过为每个联接赋予不同的名称来解决此问题,例如:
SELECT DISTINCT fixtures.fixture_id, fixtures.fixture_date,
fixtures.fixture_time, fixtures.home_teamID,
fixtures.away_teamID, fixtures.comp_id
From fixtures
JOIN teams AS hometeams ON fixtures.home_teamID = hometeams.team_id
JOIN teams AS awayteams ON fixtures.away_teamID = awayteams.team_id
JOIN competitions ON fixtures.comp_id = competitions.comp_id
ORDER BY fixture.id ASC
答案 1 :(得分:0)
如果要在同一张表中加入两个ime,则需要别名
SELECT DISTINCT fixtures.fixture_id
, fixtures.fixture_date
, fixtures.fixture_time
, fixtures.home_teamID
, fixtures.away_teamID
, fixtures.comp_id
, a.team_name home_team
, b.team_name away_team
From fixtures
JOIN teams a ON fixtures.home_teamID = a.team_id
JOIN teams b ON fixtures.away_teamID = b.team_id
JOIN competitions ON fixtures.comp_id = competitions.comp_id
ORDER BY fixture.id ASC
在此示例中,a和b是同一表的别名,以两种方式使用一种,一种用于home_team,一种用于way_team
对于@Tim Biegeleisen建议的更紧凑的代码,可以将别名用作
SELECT DISTINCT f.fixture_id
, f.fixture_date
, f.fixture_time
, f.home_teamID
, f.away_teamID
, f.comp_id
, a.team_name home_team
, b.team_name away_team
From fixtures f
JOIN teams a ON f.home_teamID = a.team_id
JOIN teams b ON f.away_teamID = b.team_id
JOIN competitions c ON f.comp_id = c.comp_id
ORDER BY f.id ASC