0

Xboxの仮想ホッケーリーグの統計追跡Webページに取り組んでいます。私はこれに少し取り組んでおり、ほとんどの作業を行っていますが、特定の情報を表示するときに問題が発生することに気づきました。WHERE基準でも選択するのではなく、私のJOINに一致するテーブルの最初の行を選択しているようです。私がやろうとしているのは、ゲームのボックススコアを表示するページを用意することです。

IE、以下の情報から、ゲーム1は「シカゴのニューヨーク」になり、最終結果はNY-5、CHI-3になります。それはうまくいきます。私が遭遇している問題は、ゲーム3「ニューヨークのシカゴ」を表示するときに、CHI-2NY-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      |
----------------------------------
4

1 に答える 1

1

クエリは複数の行を選択しており、アプリケーションは最初の行のみを表示しています。たまたま最初の行がゲームによって順序付けられていますが、必ずしもそうとは限りません。

質問自体で言うように、問題はゲーム統計への参加です。句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
于 2012-11-18T23:41:53.017 に答える