0

3 つのテーブルを結合して、各テーブルのデータにアクセスしようとしています。この場合のメイン テーブルは統計テーブルになります。そのため、Players テーブルにアクセスして NextOpponent を取得する必要があり、次に Defense テーブルにアクセスして NextOpponent で計算を実行する必要があります。どのアイデアも、これら 3 つすべてを達成する必要があります。

現在の SQL ステートメント: (現在、重複を印刷する終わりのないループにあります)

$query="SELECT * FROM Stats
    INNER JOIN Defense ON Stats.Team =  Defense.Team
    INNER JOIN Players ON Defense.Team = Players.team";

これが私のデータベース構造です。

Players
-PID (Primary)
-Name
-NextOpponent

Stats
-PID (Primary)
-Name
-Touchdowns
-Receptions
-etc....

Defense
-Team (Unique)
-Points

したがって、私の意図した出力は次のようになります。

Chris Johnson
Next Opponent: IND
Defense Points: 100

更新: フィールドにアクセスできるようになりましたが、防御ポイントをエコーすると、実際にはプレイヤーが次の対戦相手の防御ポイントではなくチームの防御ポイントを返します。

4

3 に答える 3

1

を使用してはGROUP BY p.idどうですか?

アップデート

これが最後のクエリでした。

SELECT * FROM Stats s JOIN Players p ON p.PID = s.PID JOIN Defense d ON d.Team = p.upcoming GROUP BY p.PID

于 2012-07-18T16:25:32.817 に答える
1

このような:

SELECT * FROM Stats s, Defense d, Players p 
WHERE s.Team = d.Team AND d.Team = p.team;
于 2012-07-18T16:14:02.490 に答える
0

SQL は無限のデータ セットを返しません。ループ内の次のレコードを確実に読み取るために、コードを確認することをお勧めします。

于 2012-07-18T16:27:34.517 に答える