如何跨表引用具有一致主键的另一个表

时间:2012-07-14 13:26:44

标签: php mysql sql

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

例如:通过以下数据结构,我想回应玩家的名字和照片,同时也通过PHP回应所有的统计数据。我只使用播放器Stats成功完成了这项操作,但我不知道如何访问另一个表中的字段。

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

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++;
}

1 个答案:

答案 0 :(得分: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 />";
}