有没有一种方法可以使用不同的ID别名获取MySQL记录

时间:2019-09-30 08:21:09

标签: php html mysql wamp

我正在尝试使用不同的别名来获取记录,但是它们是相关的。

我正在使用的服务器是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的该平台的新手。预先感谢。

2 个答案:

答案 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