有没有办法使用不同的 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