[英]Query only selecting first match, not where 2 criteria are met
我正在为Xbox上的虚拟曲棍球联盟制作一个统计跟踪网页。 我已经做了一些工作,并且已经完成了大部分工作,但是在显示某些信息时已经意识到了一个问题。 似乎选择了表中与我的JOIN匹配的第一行,而不是也根据WHERE条件选择了它。 我想做的是有一个页面,该页面将显示游戏的盒子分数。
IE,根据以下信息,第一场比赛将是“芝加哥的纽约”,最终结果应为NY-5,CHI-3。 这样可行。 我遇到的问题是,当我显示游戏3,“纽约的芝加哥”时,它会显示相同的数据,而不是CHI-2 NY-4。
有什么我想念的地方吗?还是有更好的方法来做到这一点? 我基本上希望我的JOIN可以执行以下操作。这就是我在WHERE行中所做的。
JOIN GameStats GSA ON ((GSA.team_ID = gs.awayTeam_ID) AND (GSA.gameSchedule_ID = '" . $scheduleID . "')
JOIN GameStats GSH ON ((GSH.team_ID = gs.homeTeam_ID) AND (GSH.gameSchedule_ID = '" . $scheduleID . "')
任何帮助将不胜感激!
$sql="SELECT
away.name as AWAY_TEAMNAME,
away.ID as AWAY_TEAMID,
home.name as HOME_TEAMNAME,
home.ID as HOME_TEAMID,
gs.ID as GAMEID
GSA.GOALS AS AWAY_GOALS,
GSA.SHOTS AS AWAY_SHOTS
GSH.GOALS AS HOME_GOALS,
GSH.SHOTS AS HOME_SHOTS
FROM
GameSchedule gs
JOIN Team away ON away.ID = gs.awayTeam_ID
JOIN Team home ON home.ID = gs.homeTeam_ID
JOIN GameStats GSA ON GSA.team_ID = gs.awayTeam_ID
JOIN GameStats GSH ON GSH.team_ID = gs.homeTeam_ID
WHERE
gs.ID = " . $scheduleID;
Table: Team
-------------------
| ID | name |
-------------------
| 1 | New York |
| 2 | Chicago |
| 3 | Detroit |
| 4 | Boston |
-------------------
Table: GameStats
--------------------------------------------------
| ID | gameSchedule_ID | team_ID | goals | shots |
--------------------------------------------------
| 1 | 1 | 1 | 5 | 5 |
| 2 | 1 | 2 | 3 | 2 |
| 3 | 2 | 3 | 6 | 1 |
| 4 | 2 | 4 | 1 | 7 |
| 5 | 3 | 2 | 2 | 14 |
| 6 | 3 | 1 | 4 | 7 |
| 7 | 4 | 4 | 5 | 9 |
| 8 | 4 | 3 | 5 | 4 |
-------------------------------------------------
Table: GameSchedule
----------------------------------
| ID | awayTeam_ID | homeTeam_ID |
----------------------------------
| 1 | 1 | 2 |
| 2 | 3 | 4 |
| 3 | 2 | 1 |
| 4 | 4 | 3 |
| 5 | 2 | 4 |
| 6 | 1 | 3 |
----------------------------------
您的查询选择了多行,而您的应用程序仅显示第一行。 碰巧第一行是按游戏排序的,但不一定如此。
正如您在问题本身中所说的那样,问题在于游戏统计数据的联接。 您的from
子句应如下所示:
FROM
GameSchedule gs
JOIN Team away ON away.ID = gs.awayTeam_ID
JOIN Team home ON home.ID = gs.homeTeam_ID
JOIN GameStats GSA ON GSA.team_ID = gs.awayTeam_ID and
gsa.gameschedule_id = gs.id
JOIN GameStats GSH ON GSH.team_ID = gs.homeTeam_ID and
gsh.gameschedule_id = gs.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.