Php 通过MySQL连接3个表

Php 通过MySQL连接3个表,php,mysql,Php,Mysql,我试图连接3个表以访问每个表中的数据。本例中的主表将是Stats表。所以我需要访问Players表来获取他们的NextOpponent,然后我需要访问defence表来对NextOpponent进行计算。任何想法都必须实现这三个目标 当前SQL语句:(当前处于打印副本的无止境循环中) 这是我的数据库结构 Players -PID (Primary) -Name -NextOpponent Stats -PID (Primary) -Name -Touchdowns -Receptions -e

我试图连接3个表以访问每个表中的数据。本例中的主表将是Stats表。所以我需要访问Players表来获取他们的NextOpponent,然后我需要访问defence表来对NextOpponent进行计算。任何想法都必须实现这三个目标

当前SQL语句:(当前处于打印副本的无止境循环中)

这是我的数据库结构

Players
-PID (Primary)
-Name
-NextOpponent

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

Defense
-Team (Unique)
-Points
因此,我的预期输出是:

Chris Johnson
Next Opponent: IND
Defense Points: 100
更新:我现在可以进入球场了,但是当我回显防守点时,它实际上返回了球队的防守点,球员不是他们下一个对手的防守点

像这样:

SELECT * FROM Stats s, Defense d, Players p 
WHERE s.Team = d.Team AND d.Team = p.team;

使用p.id分组怎么样

更新

这是最后一个问题:


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

SQL不会返回无尽的数据集。我建议查看您的代码,以确保您读取循环中的下一条记录。

我仍然存在循环问题,但它确实让我可以访问所有需要的字段。如果您继续获得相同的字段,您也可以使用
分组方式
。此外,使用此选项并尝试访问防御点时,它实际上会返回球员不在下一个对手防御点上的球队防御点。尝试将此
s.Team=d.Team
翻转到此
d.Team=s.Team
?你们只需要在WHERE条件下稍微调整一下就可以了。我翻转了,但并没有效果。这有助于修复循环问题。但这并不是完整的答案。试试这个:
SELECT*FROM Stats s s JOIN Players p ON p.id=s.id JOIN defence d ON d.team=p.nextoponent GROUP BY p.id感谢您的帮助,这是最后一个查询<代码>从统计数据中选择*s加入球员p在p.PID=s.PID加入防守d在d.Team=p即将加入的小组p.PID
你能把它作为你的答案吗?
SELECT * FROM Stats s, Defense d, Players p 
WHERE s.Team = d.Team AND d.Team = p.team;