Вопрос:
Я новичок в 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
Кто-нибудь знает, почему?
благодаря
Лучший ответ:
Это связано с тем, что столбец course_id присутствует в более чем двух таблицах.
Напишите sm.course_id или sce.course_id, и он будет работать.
Ответ №1
Вы объединяете несколько таблиц, по крайней мере две из таблиц имеют столбец course_id. В вашем заявлении and course_id = ‘MyCourse’ вы не указываете, в какой таблице есть курс_ид.
Ответ №2
student_courseenrollment и одна из ваших других таблиц имеет столбец с именем course_id. Используйте псевдоним таблицы, например au.course_id.
Ответ №3
вам нужно использовать псевдоним таблицы со столбцом курсора id в нем
как sce.course_id
как указано в комментарии ниже, это может изменить ваш результат, поэтому используйте имя таблицы таблицы, которое используется в предложении where или псевдониме этой таблицы
Ответ №4
Вы используете две разные таблицы с одинаковым именем столбца. Если вы хотите использовать это имя столбца в любом запросе, вы должны использовать его с именем таблицы Eg:
select * from table1,table2 where table1.userId=’any id’;