Requisitos previos: Conceptos básicos de SQL
Las consultas anidadas son una forma de realizar consultas complejas integrando una consulta dentro de otra. La consulta externa puede aplicar algunas condiciones a los resultados de la consulta interna. usemos ESTUDIANTE, CURSO, ESTUDIANTE_CURSO tablas para comprender consultas anidadas.
intenta capturar java
ALUMNO
| S_ID | NOMBRE DE | S_DIRECCIÓN | S_TELÉFONO | SABIO |
| T1 | RAM | DELHI | 9455123451 | 18 |
| T2 | RAMESH | GURGAÓN | 9652431543 | 18 |
| T3 | SUJITO | ROHTAK | 9156253131 | 20 |
| T4 | SEGURO | DELHI | 9156768971 | 18 |
CURSO
| C_ID | C_NOMBRE |
| C1 | DSA |
| C2 | Programación |
| C3 | SGBD |
CURSO_ESTUDIANTE
| S_ID | C_ID |
| T1 | C1 |
| T1 | C3 |
| T2 | C1 |
| T3 | C2 |
| T4 | C2 |
| T4 | C3 |
Existen principalmente dos tipos de consultas anidadas:
que es computadora
- Consultas anidadas independientes: En las consultas anidadas independientes, la ejecución de la consulta comienza desde la consulta más interna hasta las consultas más externas. La ejecución de la consulta interna es independiente de la consulta externa, pero el resultado de la consulta interna se utiliza en la ejecución de la consulta externa. Se utilizan varios operadores como IN, NOT IN, ANY, ALL, etc. para escribir consultas anidadas independientes.
EN: Si queremos descubrir S_ID que están inscritos en C_NOMBRE 'DSA' o 'DBMS', podemos escribirlo con la ayuda de una consulta anidada independiente y un operador IN. De CURSO tabla, podemos averiguarlo C_ID para C_NOMBRE 'DSA' o DBMS' y podemos usar estos C_ID s para encontrar S_ID es de CURSO_ESTUDIANTE MESA. PASO 1: Hallazgo C_ID para C_NOMBRE ='DSA' o 'DBMS' Seleccionar C_ID de CURSO dónde C_NOMBRE = 'DSA' o C_NOMBRE = 'SGBD' PASO 2: Usando C_ID del paso 1 para encontrar S_ID Seleccionar S_ID de CURSO_ESTUDIANTE dónde C_ID EN (SELECCIONAR C_ID de CURSO dónde C_NOMBRE = 'DSA' o C_NOMBRE ='SGBD'); La consulta interna devolverá un conjunto con los miembros C1 y C3 y la consulta externa devolverá esos S_ID s para el cual C_ID es igual a cualquier miembro del conjunto (C1 y C3 en este caso). Entonces devolverá S1, S2 y S4. Nota: Si queremos saber los nombres de ALUMNO Para aquellos que se hayan inscrito en 'DSA' o 'DBMS', pueden hacerlo de la siguiente manera: Seleccione S_NAME de ALUMNO dónde S_ID EN (Seleccione S_ID de CURSO_ESTUDIANTE dónde C_ID EN (SELECCIONAR C_ID de CURSO dónde C_NOMBRE ='DSA' o C_NOMBRE ='SGBD'));
NO EN: Si queremos descubrir S_ID s de ALUMNO s que no se han registrado en 'DSA' ni en 'DBMS', pueden hacerlo como: Seleccione S_ID de ALUMNO dónde S_ID NO EN (Seleccione S_ID de CURSO_ESTUDIANTE dónde C_ID EN (SELECCIONAR C_ID de CURSO dónde C_NOMBRE ='DSA' o C_NOMBRE ='SGBD')); La consulta más interna devolverá un conjunto con los miembros C1 y C3. La segunda consulta interna devolverá esos S_ID s para el cual C_ID es igual a cualquier miembro del conjunto (C1 y C3 en este caso) que son S1, S2 y S4. La consulta más externa devolverá esos S_ID es donde S_ID no es miembro del conjunto (S1, S2 y S4). Entonces devolverá S3.
- Consultas anidadas correlacionadas: En consultas anidadas correlacionadas, el resultado de la consulta interna depende de la fila que se está ejecutando actualmente en la consulta externa. p.ej.; Si queremos descubrir NOMBRE DE de ALUMNO s que están inscritos en C_ID 'C1', se puede hacer con la ayuda de una consulta anidada correlacionada como: Seleccione S_NAME de ALUMNO S donde EXISTE (seleccione * de CURSO_ESTUDIANTE SC donde S. S_ID =SC. S_ID y SC. C_ID ='C1'); Para cada fila de ALUMNO S, encontrará las filas de CURSO_ESTUDIANTE donde s. S_ID =SC. S_ID y SC. C_ID ='C1'. si por un S_ID de ALUMNO S, existe al menos una fila en CURSO_ESTUDIANTE SC con C_ID ='C1', entonces la consulta interna devolverá verdadero y correspondiente S_ID será devuelto como salida.
EJEMPLO EN CÓDIGO SQL:
SELECCIONAR Nombre del estudiante
DE estudiantes
DONDE StudentID EN (
SELECCIONAR ID de estudiante
DE Grados
emitir en sqlDONDE Materia = 'Matemáticas' Y Puntuación> 90
);