2013-08-22 78 views
1

我是一個MySQL新手,無法弄清楚這裏出了什麼問題。我有兩張桌子。左表稱爲「鍛鍊」。相關列爲date(類型日期)和id(類型爲int)。MySQL內部連接查詢語法錯誤

右表名爲Workout_locations(相關字段:workout_id type int, and location_id type int)。

連接字段是Workouts.idWorkout_locations.workout_id

我想要做的是得到兩列的表:date(來自Workouts)和location_id(來自Workout_locations)。我只需要根據幾個字段從Workouts表中提取記錄(sql語句應該清楚這一點)。

這裏是我的SQL語法:

SELECT Workouts.date as date, Workout_locations.location_id as loc_id 
FROM Workouts 
WHERE Workouts.pacegroup_id='9' AND (Workouts.date BETWEEN '2013-08-19' AND '2013-08-25') 
INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id" 

但我得到這個錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id' at line 1

我希望這是一個非常簡單的錯誤發現有人誰是經歷了這。任何人都可以看到它?謝謝!

回答

3

您的INNER JOIN應該在WHERE之前。我也並不認爲你所需要的括號around your BETWEEN clause,但我懷疑這會導致錯誤的兩種方式:

SELECT Workouts.date as date, Workout_locations.location_id as loc_id 
FROM Workouts 
INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id 
WHERE Workouts.pacegroup_id = '9' 
AND Workouts.date BETWEEN '2013-08-19' AND '2013-08-25'; 

而且,儘管他們技術上讓你擺脫它,你應該避免使用「日期」作爲選定的列名稱(這是一個reserved word)。

你可以做一些簡化,以及以使事情更容易閱讀的:

SELECT Workouts.date AS wo_date, Workout_locations.location_id AS loc_id 
FROM Workouts w 
INNER JOIN Workout_locations l ON w.id = l.workout_id 
WHERE w.pacegroup_id = '9' 
AND w.date BETWEEN '2013-08-19' AND '2013-08-25'; 
+0

這似乎解決它。是的,這些parens主要是爲了我自己的理智。謝謝! – Alex