Объединить 2 таблицы ПО 2 полей - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть эти таблицы в моем PHPMYADMIN, все, что я хочу, это получить имя для каждой команды, используя ID, я пытался использовать LEFT JOIN, но он возвращает только 1 команду, в противном случае он возвращает нуль

Это совпадение с таблицей

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

I 'мы пытались использовать этот оператор 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 ]

2 голосов
/ 05 февраля 2012

Вам придется дважды присоединиться к командному столу, используя псевдонимы таблиц.

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 голосов
/ 05 февраля 2012

Вы можете попробовать использовать псевдонимы для получения правильной информации:

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

Это должно дать вам то, что вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...