Рубрики

ВОРОТА | GATE-CS-2015 (Mock Test) | Вопрос 17

Рассмотрим следующие три таблицы для хранения зачислений студентов на разные курсы.


Student(EnrollNo, Name)
Course(CourseID, Name)
EnrollMents(EnrollNo, CourseID) 

Что делает следующий запрос?

SELECT S.Name
FROM Student S, Course C, Enrollments E
WHERE S.EnrollNo = E.EnrollNo AND 
      C.Name = "DBMS" AND
      E.CourseID = C.CourseID AND
      S.EnrollNo IN 
        (SELECT S2.EnrollNo
         FROM Student S2, Course C2, Enrollments E2
         WHERE S2.EnrollNo = E2.EnrollNo AND
               E2.CourseID = C2.CourseID
               C2.Name = "OS")

(A) Имя всех студентов, которые зачислены на курсы «СУБД» или «ОС»
(B) Имя всех студентов, которые зачислены в «СУБД» и «ОС»
(C) Имя всех студентов, которые зачислены в «СУБД» или «ОС» или оба.
(D) Не из перечисленного

Ответ: (Б)
Объяснение:

Фоновое чтение: приведенный выше запрос является примером вложенного запроса, т.е. запроса внутри запроса. Сначала решается внутренний запрос, а затем внешний, в зависимости от результата внутреннего запроса.

  • WHERE IN возвращает значения, соответствующие значениям в списке или подзапросе.
  • WHERE IN — это сокращение для нескольких ИЛИ условий.
Here, firstly the inner query is solved. It returns all the Enrollment 
Numbers (SELECT S2.EnrollNo) of students where the students’ enrollment 
number matches with the enrollment number of the courses 
(WHERE S2.EnrollNo = E2.EnrollNo) which have the course IDs whose Course 
Name is “OS” (E2.CourseID = C2.CourseID and C2.Name = “OS”).

Следовательно, все идентификаторы регистрации отфильтровываются для студентов, зачисленных на курс «ОС».

The outer query works similarly and filters out all the all tuples where 
the Students Enrollment Number matches with the Enrollment Number where the
course ID’s are for the course names “DBMS” 
(S.EnrollNo = E.EnrollNo AND C.Name =”DBMS” AND E.CourseID = C.CourseId) and 
additionally matches with the ones that are returned by the inner query i.e. 
Enrollment Number of students who are enrolled for the course “OS”.

Следовательно, вышеупомянутые запросы возвращают имена всех студентов (SELECT S.Name), которые записались на оба курса «СУБД» и «ОС».

Следовательно, вариант (B).

Это объяснение было внесено Яшикой Арора.
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE-CS-2015 (Mock Test) | Вопрос 17

0.00 (0%) 0 votes