【问题标题】:Join 2 Tables ON 2 fields在 2 个字段上连接 2 个表
【发布时间】:2012-02-05 00:03:03
【问题描述】:

我的 PHPMYADMIN 中有这些表,我只想使用 ID 获取每个团队的名称,我一直在尝试使用 LEFT JOIN,但它只返回 1 个团队,否则它将返回 null

此表匹配

        |   match_id    |   HomeTeam    |   AwayTeam    |
        +------------------------------------------------
        |       1       |       3       |       1       |

这是餐桌团队

    |   team_id     |       team_name       |
    +----------------------------------------
    |       1       |       Manchester      |
    |       2       |       Barcelona       |
    |       3       |       Real Madrid     |

这是我想要 SQL 返回的结果

    |match_id|HomeTeam|AwayTeam| Home_name   | Away_name |
    +-----------------------------------------------------
    |    1   |   3    |   1    | Real Madrid | Manchester|

我一直在尝试使用这个 SQL 语句

    SELECT `match.*`,`team_*` FROM `match`
    LEFT JOIN `team` ON `match.HomeTeam` = `team.match_id`
    LEFT JOIN `team` ON `match.AwayTeam` = `team.match_id`
    WHERE `match.match_id` = 1

任何解决方案

目前我正在使用此 PHP 代码,但我认为效率不高

    $Query  = 'SELECT * FROM match WHERE match_id = 1'
    // excute Query //

    foreach($match_array as $match)
    {
        $Query = 'SELECT FROM team WHERE team_id = '.$match['HomeTeam'].''

        $home_team_name = somthing

        $Query = 'SELECT FROM team WHERE team_id = '.$match['AwayTeam'].''
                    $away_team_name = something 
    }

【问题讨论】:

    标签: php mysql sql database phpmyadmin


    【解决方案1】:

    您必须使用表别名离开加入团队表两次。

    SELECT match.*,team_home.*,team_away.* FROM match
      LEFT JOIN team team_home ON match.HomeTeam = team_home.team_id
      LEFT JOIN team team_away ON match.AwayTeam = team_away.team_id
      WHERE match.match_id = 1
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用别名来获取正确的信息:

      SELECT `m`.`*`, `ht`.`name`, `at`.`name` FROM `match` m
      LEFT JOIN `team` ht ON `m`.`HomeTeam` = `ht`.`match_id`
      LEFT JOIN `team` at ON `m`.`AwayTeam` = `at`.`match_id`
      WHERE `m`.`match_id` = 1
      

      这应该会给你你想要的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-26
        • 2011-06-30
        • 2021-11-02
        • 1970-01-01
        相关资源
        最近更新 更多