2012-02-05 76 views
0

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

此匹配表

 | 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 
    } 

回答

2

你必须使用表别名左两次加入团队表。

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 
+0

**非常感谢** – 2012-02-05 02:28:31

+0

@OthmanAbahossain欢迎您。 – dgw 2012-02-05 03:18:06

0

你可以尝试,以获得正确的信息使用别名:

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 

这应该给你你想要什么