如何在同一列上使用两个连接

时间:2012-03-23 05:57:31

标签: php mysql sql join

我有两个表:一个表匹配,另一个表是团队。在比赛中,我有一个日期,时间和两个ID(两个队)。在团队中,我有一个ID和团队的名字。我想要做的是获得与队伍名称匹配的列表。 我知道INNER JOIN可以做到这一点,但我不确定如何...这就是我所拥有的:

SELECT teams.name AS team1, teams.name AS team2, matchs.id, matchs.date, matchs.time
FROM matchs
INNER JOIN teams ON teams.id=matchs.team1

显然,我得到的只是team1的名字。我怎样才能拥有两个团队名称?

谢谢

4 个答案:

答案 0 :(得分:2)

你想做类似下面的事情。只需使用别名来区分这两个连接,并使您的代码更具表现力。

SELECT teams1.name AS team1, teams2.name AS team2, matchs.id, matchs.date, matchs.time
FROM matchs
    INNER JOIN teams AS teams1
        ON teams1.id=matchs.team1
    INNER JOIN teams AS teams2 
        ON teTeams2ams.id=matchs.team2

答案 1 :(得分:1)

最简单的方法是执行两个连接:

SELECT t1.name AS team1, t2.name AS team2, 
       matchs.id, matchs.date, matchs.time
FROM matchs
    INNER JOIN teams t1 
        ON t1.id = matchs.team1  
    INNER JOIN teams t2 
        ON t2.id = matchs.team2

表格为aliasedt1t2),以区分查询中的每个数据集。

答案 2 :(得分:0)

SELECT t1.name AS team1, t2.name AS team2, matchs.id, matchs.date, matchs.time
FROM matchs
INNER JOIN teams t1 ON t1.id = matchs.team1 
INNER JOIN teams t2 on t2.id = matchs.team2

答案 3 :(得分:0)

您可以通过执行另一个连接并提供表别名来实现此目的:

SELECT t1.name AS team1, t2.name AS team2, matchs.id, matchs.date, matchs.time
FROM matchs
INNER JOIN teams as t1 ON t1.id = matchs.team1
INNER JOIN teams ON as t2 t2.id = matchs.team1