2013-04-01 143 views
1

我發現了同樣的問題,按照步驟操作,但仍然出錯。
我一直在尋找這很多天。MySQL加入3個表格

我有3個表

用戶

+----+-----------------------------+-------------+ 
| id | fname      | lname  | 
+----+-----------------------------+-------------+ 
| 4 | John      | Menezes  | 
+----+-----------------------------+-------------+ 

+----+-----------------------------+-------------+ 
| group_id | group_name   | created_on | 
+----+-----------------------------+-------------+ 
| 1  | Facebook friends  | 25/12/2012 | 
+----------+-----------------------+-------------+ 

group_members

+----+-------------+-------------+ 
| id | user_id  | group_id | 
+----+-------------+-------------+ 
| 4 | 4   |  1  | 
+----+-------------+-------------+ 

我想有點像這樣 最終輸出

+----+--------------+-----------------------+ 
| fname | lname |  groupname  | 
+----+--------------+-----------------------+ 
| John | Menezes |  Facebook Friends | 
+----+--------------+-----------------------+ 

我用這個查詢

SELECT u.fname, u.lname, g.group_name 
FROM user AS u 
LEFT JOIN group_members AS gm ON gm.user_id = u.id 
INNER JOIN group AS g ON g.group_id = gm.group_id 

但它給我這個錯誤

#1064 - 您的SQL語法錯誤;檢查在線對應於您的MySQL服務器版本的使用接近正確的語法「LIMIT 0,30組AS克ON g.group_id = gm.group_id」手動4

還試圖此

where g.low_limit > 70 
and g.high_limt < 120 
+1

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html – cheesemacfly

回答

3

你碰到的問題是group是在MySQL http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html保留字。您需要將表名稱和列名稱反向寫入 單引號 ,以便MySQL將該名稱解釋爲表格。

嘗試

SELECT `u`.`fname`, `u`.`lname`, `g`.`group_name` 
FROM `user` AS `u` 
LEFT JOIN `group_members` AS `gm` ON `gm`.`user_id` = `u`.`id` 
INNER JOIN `group` AS `g` ON `g`.`group_id` = `gm`.`group_id` 

編輯:性格改變的名稱。感謝@adrian

+2

這是反引號,而不是單引號 - 在你的代碼中是正確的,而不是在你的解釋中。 – Adrian

+0

我對角色的名字不好。我將編輯。 – Scott

+1

ohhh上帝這是如此簡單 – pmenezes

0

嘗試:

SELECT u.fname, u.lname, g.group_name 
FROM user AS u 
LEFT JOIN group_members AS gm ON gm.user_id = u.id 
INNER JOIN group AS g ON g.group_id = gm.id