0

我有两个表,它们都有一个唯一的 PID。我需要知道如何设置主键/外键,以便可以在一个 SQL 语句中访问两个表中的字段。

例如:使用以下数据结构,我想回显球员的姓名和照片,但也通过 PHP 回显他们的所有统计数据。我仅使用玩家统计信息就成功完成了此操作,但我不知道如何访问另一个表中的字段。

到目前为止,这是我的数据库结构:

Players
-PID (Set as Primary Key)
-Name
-Height
-College
-Photo

Stats
-PID 
-Touchdowns
-Receptions

当前 PHP 代码:

$query="
SELECT * FROM Stats    
ORDER BY Stats.FantasyPoints DESC";

$res=mysql_query($query);
$num=mysql_numrows($res);
$i=0;

while($i< $num){
$Name = mysql_result($res, $i, "Name");
$FantasyPoints = mysql_result($res, $i, "FantasyPoints");

echo $Name . ': '. $FantasyPoints . "<br />";
$i++;
}
4

1 回答 1

2
$sql = "
SELECT p.*, s.*
FROM Players AS p
LEFT JOIN Stats AS s ON p.PID = s.PID
ORDER BY s.FantasyPoints DESC
";

您也可以使用 JOIN 而不是 LEFT JOIN,这会将结果限制为只有拥有统计数据的玩家

编辑 sql 以产生类似于您自己的 sql 的结果。

==================================================== ====

这就是我将如何去做...

$query =
"
SELECT s.*, p.*
FROM Stats AS s
LEFT JOIN Players AS p ON p.PID = s.PID   
ORDER BY s.FantasyPoints DESC
";

$res = mysql_query($query);
while ($row = mysql_fetch_assoc($res))
{
    echo "{$row['name']}: {$row['FantasyPoints']}<br />";
}
于 2012-07-14T13:30:19.690 回答