PUERTA | GATE-CS-2015 (prueba simulada) | Pregunta 17 – Part 3

Considere las siguientes tres tablas para almacenar las inscripciones de estudiantes en diferentes cursos.


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

¿Qué hace la siguiente consulta?

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) Nombre de todos los estudiantes que están inscritos en cursos «DBMS» o «OS»
(B) Nombre de todos los estudiantes que están inscritos en «DBMS» y «OS»
(C) Nombre de todos los estudiantes que están inscritos en «DBMS» o «SO» o ambos.
(D) Ninguna de las anteriores

Respuesta: (B)
Explicación:  

Lectura de antecedentes: la consulta anterior es un ejemplo de consulta anidada , es decir, consulta dentro de una consulta. Primero se resuelve la consulta interna y luego la externa dependiendo del resultado de la consulta interna.

  • WHERE IN devuelve valores que coinciden con valores en una lista o subconsulta.
  • WHERE IN es una forma abreviada de múltiples condiciones OR.
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”).

Por lo tanto, todas las ID de inscripción se filtran para los estudiantes que están inscritos en el curso «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”.

Por lo tanto, las consultas anteriores devuelven los nombres de todos los estudiantes (SELECCIONAR S.Nombre) que se han inscrito en los cursos «DBMS» y «OS».

De ahí la opción (B).

Esta explicación ha sido aportada por Yashika Arora.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *