3

私は MySQL の初心者のようなもので、ここで何が問題なのかわかりません。私は2つのテーブルを持っています。左の表はワークアウトと呼ばれます。関連する列はdate(type date) およびid(type int) です。

右側のテーブルが呼び出されますWorkout_locations(関連フィールド: workout_id type int, and location_id type int)。

結合フィールドはWorkouts.idWorkout_locations.workout_idです。

私がやりたいのは、date(ワークアウトから) とlocation_id(からWorkout_locations) の 2 つの列のテーブルを取得することだけです。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"

しかし、私はこのエラーが発生します:

SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id' 付近で使用する正しい構文を確認してください。

これは、これを経験した人にとって非常に簡単に見つけられるエラーであることを願っています. 誰でも見ることができますか?ありがとう!

4

1 に答える 1

7

INNER JOINの前に来る必要がありますWHEREまた、句の周りBETWEENに括弧が必要だとは思いませんが、どちらの方法でもエラーが発生するとは思えません。

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';

また、技術的には回避できますが、選択した列名として「日付」を使用しないでください (予約語です)。

読みやすくするために、少し合理化することもできます。

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';
于 2013-08-22T20:35:44.270 に答える