довольно сложный вопрос к слову, но вот таблицы:
* СТУДЕНТ
ID рк
ASSIGNED_ADVISOR_ID fk ref (DEP_FACULTY.ID)
Fname
LNAME
* DEP_FACULTY
ID
Fname
LNAME
* ADVISE_HIST
student_id
ACTUAL_ADVISOR_ID fk ref (DEP_FACULTY.ID)
вот проблема:
Студент может быть посоветован преподавателем, отличным от ASSIGNED_ADVISOR_ID
(то есть ACTUAL_ADVISOR_ID
), и мне нужен запрос, объединяющий эти 3 таблицы, который вернет имя студента, имя назначенного консультанта и фактического консультанта имя (среди прочего я не буду перечислять).
мой запрос пока:
select
CONCAT(STUDENT.LNAME,', ',STUDENT.FNAME),
CONCAT(DEP_FACULTY.LNAME,', ',DEP_FACULTY.FNAME) as "ASSIGNED ADVISOR",
***need a field here for actual advisor***
from
STUDENT
join DEP_FACULTY on STUDENT.ASSIGNED_ADVISOR_ID=DEP_FACULTY.ID
left join ADVISE_HIST on STUDENT.ID=ADVISE_HIST.STUDENT_ID;
Можно ли как-то снова отобразить DEP_FACULTY.LNAME
и FNAME
, но на этот раз ссылаться на советник ACTUAL?
Или мне нужно добавить избыточность к ADVISE_HIST
(ADVISE_HIST.DEP_FACULTY_LNAME
и ADVISE_HIST.DEP_FACULTY_FNAME
), чтобы правильно вернуть эту информацию?