ОШИБКА 1052 (23000): Столбец ‘course_id’, где предложение неоднозначно

Вопрос: Я новичок в 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'; Но когда я хочу добавить еще один столбец из другой таблицы:

Вопрос:

Я новичок в 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’;

Оцените статью
Добавить комментарий