我正在尝试连接3个表以访问每个表中的数据。本例中的主表将是Stats表。所以我需要访问玩家表来获取他们的NextOpponent,然后我需要访问防御表来对NextOppennt进行计算。任何想法都必须实现这三个目标。
当前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
更新:我现在可以进入球场,但当我回应防守点时,它实际上会返回球员所在球队的防守点,而不是他们下一个对手的防守点。
使用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
像这样:
SELECT * FROM Stats s, Defense d, Players p
WHERE s.Team = d.Team AND d.Team = p.team;
SQL不会返回无尽的数据集。我建议查看您的代码,以确保您阅读循环中的下一条记录。