Я получаю сообщение об ошибке 1066 (42000): не уникальная таблица / псевдоним: 'STUDENT_TBL'

select STUDENT,DATE,MARK from Assessments inner join STUDENT_TBL on Assessments,ID_STUDENT=STUDENT_TBL,STD_ID inner join Visit_log,ID_STUDENT=STUDENT_TBL,STD_ID where STUDENT_TBL,STD_ID IN (select ID_STUDENT FROM Assessments group by ID_STUDENT having avg(MARK)>3.7);

Как это исправить?

0
Artem Matrosov 28 Май 2017 в 15:22

2 ответа

Лучший ответ

Вы должны использовать '.' вместо ',' для доступа к Table_Name.column_name.

select STUDENT,DATE,MARK 
from Assessments AS Assessments 
inner join STUDENT_TBL AS STUDENT_TBL on Assessments.ID_STUDENT=STUDENT_TBL.STD_ID 
inner join Visit_log AS Visit_log on Visit_log.ID_STUDENT=STUDENT_TBL.STD_ID 
where STUDENT_TBL.STD_ID IN (select ID_STUDENT FROM Assessments 
                             group by ID_STUDENT having avg(MARK)>3.7

Также используйте псевдоним как Assessments.ID_STUDENT при выборе столбцов в предложении select, если они присутствуют в более чем одной таблице

1
Rohan 28 Май 2017 в 12:45

Если вы используете схему и имя таблицы, вы должны разделить ее точкой, как это

select STUDENT, Assessments .`DATE`,MARK from Assessments
inner join STUDENT_TBL on Assessments.ID_STUDENT=STUDENT_TBL.STD_ID
inner join Visit_log.ID_STUDENT=STUDENT_TBL.STD_ID
where STUDENT_TBL.STD_ID IN (select ID_STUDENT FROM Assessments group by ID_STUDENT having avg(MARK)>3.7);
0
Bernd Buffen 28 Май 2017 в 13:03