2012-07-14 29 views
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++; 
} 
+0

向我們展示瞭如何將分別訪問任何一個表。 – RBarryYoung 2012-07-14 13:28:32

+1

通過PID加入表格 – Grixxly 2012-07-14 13:28:48

+0

http://dev.mysql.com/doc/refman/5.1/de/join.html – helle 2012-07-14 13:30:07

回答

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 />"; 
} 
+0

你可以看看我正在使用的PHP代碼,並更改你的SQL語句 – jsheffers 2012-07-14 13:39:16

+0

這工作。你從哪裏得到p和s? – jsheffers 2012-07-14 13:41:54

+0

p和s是表名的別名(參見'FROM Players as p'),它使得以後回來更容易,並且從複雜的sqls中添加或刪除列,這是我已經習慣的一種習慣。 – Dale 2012-07-14 13:45:59

相關問題