удалить ошибку квалификатора при использовании 'using' - PullRequest
1 голос
/ 22 апреля 2020

мой код

select distinct student.id
from (student join takes using(id))
        join (instructor join teaches using(id))
        using(course_id, sec_id, semester, year)
where instructor.name = 'Einstein'

Из данных, предоставленных Oracle,

Я хочу получить удостоверения личности всех студентов, посещающих занятия профессора Эйнштейна.

, но я получил сообщение об ошибке, в колонке которого не может быть квалификатора.

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

образец таблицы

студент

ID      NAME    DEPT_NAME   TOT_CRED
00128   Zhang   Comp. Sci.  102
12345   Shankar Comp. Sci.  32
19991   Brandt  History     80

преподаватель

ID      NAME        DEPT_NAME   SALARY
10101   Srinivasan  Comp. Sci.  65000
12121   Wu          Finance 90000
15151   Mozart      Music   40000

преподает

ID      COURSE_ID SEC_ID SEMESTER YEAR 
10101   CS-101    1      Fall     2009
10101   CS-315    1      Spring   2010
10101   CS-347    1      Fall     2009

занимает

ID      COURSE_ID SEC_ID SEMESTER YEAR  GRADE
00128   CS-101    1      Fall   2009    A
00128   CS-347    1      Fall   2009    A-
12345   CS-101    1      Fall   2009    C

1 Ответ

0 голосов
/ 22 апреля 2020

В Oracle вы должны присоединиться, как показано ниже

  select distinct st.id
  from student st join takes on st.id =takes.id
   join teaches tch 
   on tks.course_id=tch.course_id
   and tks.sec_id=tch.sec_id 
   and tks.semester=tch.semester 
   and tks.year=tch.year
   join instructor ins on 
   ins.id=tch.id
   where ins.name = 'Einstein'

Вы также можете попробовать использовать, как показано ниже, и дайте мне знать, если это работает

    select distinct student.id
    from student left join takes using(id)
    left join teaches using(course_id, sec_id, semester, year)
    left join instructor using(id) 
    where instructor.name = 'Einstein'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...