2012-05-31 97 views
0

我想連接三個表。第一個是組表,第二個加入者和第三個用戶。邏輯是我從組的id開始,然後通過groupid加入組對象。最後,因爲我想要名稱以及ID,我通過在用戶ID上加入用戶,將它們從用戶表中拉出來。但唉,不工作。 MySQL是拋近‘組’g的錯誤說「錯誤之前正確的,這通常意味着我失去了什麼MYSQL連接查詢語法

組 ID?|名稱|用戶標識

加入者 ID | GROUPID |用戶標識

用戶 ID |姓

$sql = "SELECT g.*,j.userid,u.firstname,u.id 
FROM 'groups' g 
LEFT JOIN 'joiners' j 
ON g.id = j.groupid 
LEFT JOIN 'users' u 
ON j.userid = u.id 
WHERE g.id = 22"; 
+0

結束時,你說,這是報告「近‘組’G錯誤」,但,在你的SQL中,它似乎是「'組'g」 - 你最近是否將表「組」的名稱更改爲「組」?由於「組」是一個保留字,因此對於表名來說是不好的選擇。 –

+0

這是一個錯字。由於這是在測試服務器上,我嘗試更改字段名稱並沒有區別。 – user1260310

回答

2

模糊的術語如表和列應使用背面逃脫蜱:

$sql = "SELECT g.*,j.userid,u.firstname,u.id 
FROM `groups` g 
LEFT JOIN `joiners` j ON g.id = j.groupid 
LEFT JOIN `users` u ON j.userid = u.id 
WHERE g.id = 22 

這是假設您的查詢的其餘部分是正確的,因爲我沒有看到你的字符串;-)

+0

表名全部用反標記轉義。你是否推薦我像'j.userid','u.userid'一樣逃避所有的列?我沒有看到你的版本中有什麼變化。在sql結尾有一個「和分號,否則它會拋出一個不同的錯誤。仍然在虧損.... – user1260310

+0

不,只是'不適合表逃逸,使用反向代替(相同的列) – Sebas

+0

是的,這就是問題所在,我認爲是撇號是撇號,而不是反引號,我認爲他們反駁了對不起,沒有理解你的答案作爲前ASP的人,我多麼討厭PHP標點符號grrr。 – user1260310