有没有办法使用不同的 ID 别名获取 MySQL 记录
Is there a way to fetch MySQL records using different ID alias's
我正在尝试使用不同的别名获取记录,但它们是相关的。
我使用的服务器是 WAMP。我已成功将我的 project/script 连接到 PhpMyAdmin 数据库,并且可以使用一些查询在我的 PHP 文件中看到一些记录并成功插入。
但是,当我尝试使用不同的别名获取记录时,我收到一条错误消息:"MySQL said: #1066 - Not Unique table/alias:'teams'"?
您能解释一下这是怎么回事吗,因为在数据库中,当我检查这些记录的 ID 时,它们显示它们是 connected/pulling 来自另一个 table 的记录。
以下是我的 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。提前致谢。
你加入了 'teams' 两次,所以当你提到 'teams' 时,它不知道你是指在 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
如果你想加入两个相同的 table 你需要别名
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 是同一 table 的别名,以两种方式使用,一种用于 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
我正在尝试使用不同的别名获取记录,但它们是相关的。
我使用的服务器是 WAMP。我已成功将我的 project/script 连接到 PhpMyAdmin 数据库,并且可以使用一些查询在我的 PHP 文件中看到一些记录并成功插入。
但是,当我尝试使用不同的别名获取记录时,我收到一条错误消息:"MySQL said: #1066 - Not Unique table/alias:'teams'"?
您能解释一下这是怎么回事吗,因为在数据库中,当我检查这些记录的 ID 时,它们显示它们是 connected/pulling 来自另一个 table 的记录。
以下是我的 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。提前致谢。
你加入了 'teams' 两次,所以当你提到 'teams' 时,它不知道你是指在 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
如果你想加入两个相同的 table 你需要别名
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 是同一 table 的别名,以两种方式使用,一种用于 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