2013-06-19 139 views
0

我有三個表我試圖從中選擇數據,每個表都有一個pID,這就是我想要的連接所基於的。當我運行以下查詢時,我仍然以三個pID字段結束。在mysql中選擇連接多個表?

我的select連接語句出了什麼問題?

SELECT * FROM Player p 
    LEFT JOIN AvgStats a ON a.pID = p.pID 
    LEFT JOIN MisTotal m ON m.pID = p.pID; 

Player Table 
pID | Name | Age 

AvgStats Table 
pID | 3pt% | gamePoints 

MisTotal Table 
pID | Fouls | rebounds 

我想創造一個返回

pID | Name | Age | 3pt% | gamePoints | Fouls | rebounds 
+3

不要使用'select *',列出你想返回的列。 – Taryn

+0

我想選擇所有的列,會做所有的項目比*快嗎? – LF4

+4

如果您選擇*,那麼您將得到三個名爲'pId'的列。通過實際命名列,您將只返回所需的列而不重複。你應該命名列,'選擇p.pid,p.name,p.age,a.3pt%等' – Taryn

回答

4

如果我正確理解你的問題,只是從查詢中刪除*並指定所需的字段(一個或多個)的表 - 在這情況下,p.pID

SELECT p.pId FROM Player p 
    JOIN AvgStats a ON a.pID = p.pID 
    JOIN MisTotal m ON m.pID = p.pID; 

鑑於您的修改,這應該禾rk:

SELECT p.pID, p.Name, p.Age, a.`3pt%`, a.gamePoints, m.fouls, m.rebounds 
... 

只要確保在特殊字符的列周圍包含反引號即可。

+0

對不起,我不想只是pID字段,我試圖生成一個由pID字段連接的所有三個表的更大表。我將添加一個我期望作爲輸出的例子。 – LF4

+0

@ LF4 - 你能提供樣品嗎?不知道我是否正確理解您的要求。 – sgeddes

+0

我剛剛用三張簡短的表格更新了這個問題,並且試圖用連接創建了這個問題。現在我想起來了,也許我正在和一個工會混在一起呢? – LF4