Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL加入-两个团队,一个徽标数据库_Php_Mysql_Sql_Join - Fatal编程技术网

Php SQL加入-两个团队,一个徽标数据库

Php SQL加入-两个团队,一个徽标数据库,php,mysql,sql,join,Php,Mysql,Sql,Join,我有两个数据库,一个数据库(游戏)包含hometeamID和visitorID。而另一个数据库(团队)包含所有的logoNames和teamID。(游戏)hometeamID和visitorID通过teamID与(团队)相关 我想运行一个SQl查询,从(游戏)数据库中输出团队,但也显示每个团队的徽标。我希望输出像这样 <item> <hometeamID> <home_logo> <visitID> <

我有两个数据库,一个数据库(游戏)包含hometeamID和visitorID。而另一个数据库(团队)包含所有的logoNames和teamID。(游戏)hometeamID和visitorID通过teamID与(团队)相关

我想运行一个SQl查询,从(游戏)数据库中输出团队,但也显示每个团队的徽标。我希望输出像这样

<item>
     <hometeamID>
     <home_logo>
     <visitID>
     <visitor_logo>
</item>
我可以很好地获得hometeam的第一个徽标,但是当我使用和

SELECT *
FROM Games LEFT JOIN
     Teams
     on Games.homeID = Teams.teamID and Games.vistorID = Teams.teamID
我什么也得不到


我可以让查询工作,但我没有得到的标志

您需要两个连接。显然,
Teams.teamId
不能同时是
homeID
visitorId
(除非一个团队在玩自己的游戏),这就是查询不返回行的原因

因此,请使用两个连接而不是一个连接:

SELECT g.homeId, h.logo as home_logo,
       g.vistorId, v.logo as visitor_logo
FROM Games g LEFT JOIN
     Teams h
     ON g.homeID = h.teamID LEFT JOIN
     Teams v
     ON g.vistorID = v.teamID;

你需要两个连接。显然,
Teams.teamId
不能同时是
homeID
visitorId
(除非一个团队在玩自己的游戏),这就是查询不返回行的原因

因此,请使用两个连接而不是一个连接:

SELECT g.homeId, h.logo as home_logo,
       g.vistorId, v.logo as visitor_logo
FROM Games g LEFT JOIN
     Teams h
     ON g.homeID = h.teamID LEFT JOIN
     Teams v
     ON g.vistorID = v.teamID;

让我们看看第二句话:

SELECT * FROM Games LEFT JOIN Teams on Games.homeID = Teams.teamID and Games.vistorID = Teams.teamID
您正确地连接了两个表以获得所需的信息。但是,使用AND语句可以使homeID=teamID和teamID=visitorID。因此,我们可以将其重写为homeID=teamID=visitorID。这永远不会发生,因为对于给定条目,homeID和visitorID永远不会相同

为了获得两组徽标,我们需要进行两次连接以添加列。比如说:

SELECT Games.homeID, HomeTeam.logo as homeLogo,
       Games.visitorID, VisitorTeam.logo as visitorLogo
FROM Games LEFT JOIN Teams HomeTeam
    ON Games.homeID = HomeTeam.teamID
LEFT JOIN Teams VisitorTeam
    ON Games.visitorID = VisitorTeam.teamID;

让我们看看第二句话:

SELECT * FROM Games LEFT JOIN Teams on Games.homeID = Teams.teamID and Games.vistorID = Teams.teamID
您正确地连接了两个表以获得所需的信息。但是,使用AND语句可以使homeID=teamID和teamID=visitorID。因此,我们可以将其重写为homeID=teamID=visitorID。这永远不会发生,因为对于给定条目,homeID和visitorID永远不会相同

为了获得两组徽标,我们需要进行两次连接以添加列。比如说:

SELECT Games.homeID, HomeTeam.logo as homeLogo,
       Games.visitorID, VisitorTeam.logo as visitorLogo
FROM Games LEFT JOIN Teams HomeTeam
    ON Games.homeID = HomeTeam.teamID
LEFT JOIN Teams VisitorTeam
    ON Games.visitorID = VisitorTeam.teamID;

谢谢你的精彩描述!解决方案非常有效!谢谢你的精彩描述!解决方案非常有效!