Mysql 仅在选择第一个匹配项时查询,而不是在满足两个条件的情况下查询

Mysql 仅在选择第一个匹配项时查询,而不是在满足两个条件的情况下查询,mysql,join,where,Mysql,Join,Where,我正在Xbox上为一个虚拟曲棍球联盟制作一个统计跟踪网页。我已经对此进行了一段时间的研究,并且已经完成了大部分工作,但是在显示某些信息时意识到了一个问题。它似乎选择了表中与我的联接匹配的第一行,而不是根据WHERE条件选择它。我试图做的是有一个页面,将显示一个游戏的方块分数 也就是说,从下面的信息来看,第一场比赛是“纽约对芝加哥”,最终结果应该是NY-5,CHI-3。这很有效。我遇到的问题是,当我展示第三场比赛“芝加哥对纽约”时,它显示的是相同的数据,而不是CHI-2 NY-4 我有没有遗漏什么

我正在Xbox上为一个虚拟曲棍球联盟制作一个统计跟踪网页。我已经对此进行了一段时间的研究,并且已经完成了大部分工作,但是在显示某些信息时意识到了一个问题。它似乎选择了表中与我的联接匹配的第一行,而不是根据WHERE条件选择它。我试图做的是有一个页面,将显示一个游戏的方块分数

也就是说,从下面的信息来看,第一场比赛是“纽约对芝加哥”,最终结果应该是NY-5,CHI-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

但是你有没有告诉MySQL,
GameStats.gameSchedule\u ID
列应该与
gameSchedule.ID
列匹配。。。就像你说的,你需要。太棒了,成功了!我甚至没有意识到你可以这样做,这就是我的目标。谢谢