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