2

MySQL は初めてなので、質問に情報が不足している場合は教えてください。

私は正常に動作するクエリを持っています:

select au.email, sm.created, sm.grade, sm.max_grade
from auth_user au, courseware_studentmodule sm
where sm.student_id = au.id
and course_id = 'MyCourse'
and sm.module_type = 'problem';

しかし、別のテーブルから別の列を追加したい場合:

select au.email, sm.created, sce.created , sm.grade, sm.max_grade
from auth_user au, courseware_studentmodule sm,  student_courseenrollment sce
where sm.student_id = au.id and sm.student_id = sce.id
and course_id = 'MyCourse'
and sm.module_type = 'problem';

このエラーが発生します

ERROR 1052 (23000): Column 'course_id' in where clause is ambiguous

理由を知っている人はいますか?

ありがとう

4

5 に答える 5

3

複数のテーブルを結合しています。少なくとも 2 つのテーブルに列がありますcourse_id。ステートメントand course_id = 'MyCourse'では、どのテーブルに course_id があるかを指定していません。

于 2013-08-19T20:35:16.883 に答える
2

student_courseenrollmentおよび他のテーブルの 1 つには、両方とも という列がありますcourse_id。テーブル エイリアスを使用しますau.course_id

于 2013-08-19T20:35:27.980 に答える
2

コースIDの列を含むテーブルのエイリアスを使用する必要があります

お気に入りsce.course_id

以下のコメントに記載されているように、これにより結果が変わる可能性があるため、where句で使用されているテーブルのテーブル名またはそのテーブルのエイリアスを使用してください

于 2013-08-19T20:35:43.323 に答える