La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Base de Datos II. Consultas Anidadas Las consultas anidadas se estructuran definiendo una consulta dentro de otra El orden de ejecución está sujeta a.

Presentaciones similares


Presentación del tema: "Base de Datos II. Consultas Anidadas Las consultas anidadas se estructuran definiendo una consulta dentro de otra El orden de ejecución está sujeta a."— Transcripción de la presentación:

1 Base de Datos II

2 Consultas Anidadas Las consultas anidadas se estructuran definiendo una consulta dentro de otra El orden de ejecución está sujeta a la jerarquía y niveles de paréntesis select lista_de_campos from tabla a where...condicion… ( select valor from tabla b ) BDII Subquery Consulta de orden superior

3 Base de Datos II Consultas Anidadas - Ejemplo select nro_factura, fecha, monto from facturas where monto in ( select max(monto) from facturas ) El compilador toma la sentencia Select y encuentra una subconsulta. Detiene la compilación de la primera Sentencia y sigue con la sentencia más interna de la sentencia Select Una vez finalizada la ejecución, se reemplazan la subconsulta con los valores obtenidos y recompila. Se procesa la consulta primaria como si tuviera constantes. BDII

4 Base de Datos II Consultas Correlacionadas Las consultas correlacionadas corresponden a un tipo de subconsulta donde una columna de la consulta principal es utilizada dentro de una consulta anidada A esta columna se la denomina referencia externa. La referencia externa puede relacionarse con cualquier consulta de un bloque superior, no necesariamente inmediato. select lista_de_campos from tabla a where campo (select valor from tabla b where a.campo<>b.campo) BDII

5 Base de Datos II Consultas Correlacionadas – Ejemplo select nro_tarjeta from tarjetas t where (select sum(monto) from resumen r where r.nro_tarjeta = t.nro_tarjeta and datepart(yy,fecha) = 2003 ) > El compilador toma la sentencia Select y encuentra una subconsulta. Detiene la compilación de la primera Sentencia y trata de compilar la subconsulta más interna de la sentencia Select BDII Condición

6 Base de Datos II Consultas Correlacionadas – Ejemplo (Cont…) Determina que para su ejecución necesita un valor existente en la consulta de nivel superior (referencia externa) Obtiene el primer valor de la consulta de nivel superior (valor de la referencia externa) Reintenta la ejecución de la subconsulta con el valor de la referencia externa como constante. El resultado de la subconsulta se reemplaza en la consulta de nivel superior como constantes y se evalúa el predicado para el registro proveedor del valor de la referencia externa. Si el predicado es verdadero, pertenece al resultado. BDII

7 Base de Datos II Operadores de Conjunto - ANY El operador ANY se combina con cualquier operador relacional ( = > = ) para comparar el valor de prueba con cada uno de los valores resultantes de la consulta. Si cualquiera de las comparaciones parciales es verdadera la expresión ANY se evalúa como verdadera. Si la expresión es un valor Null la condición se evalúa como Indeterminada. Si la consulta no devuelve ningún valor la condición se evalúa como falsa BDII

8 Base de Datos II Operadores de Conjunto - ALL El operador ALL se combina con cualquier operador relacional ( = > = ) para comparar el valor de prueba con cada uno de los valores resultantes de la consulta. Si todas de las comparaciones parciales son verdaderas la expresión ALL se evalúa como verdadera. Si la expresión es un valor Null la condición se evalúa como Indeterminada. Si la consulta no devuelve ningún valor la condición se evalúa como falsa BDII

9 Base de Datos II Operadores de Conjunto – ALL – Ejemplo select jugador from jugadores j where fecha_nac >= ALL (select fecha_nac from jugadores j1 where j1.id_club=j.id_club) select sucursal from sucursales s where (select avg(monto) from ventas) < ALL (select monto from ventas v where v.cod_sucursal = s.cod_sucursal) BDII

10 Base de Datos II Solución a un problema especial. Determinar los 3 números de socio más grandes (asumiendo que serán los tres socios más nuevos) select nro_socio from socios s where 3 > ( select count(*) from socios s1 where s.nro_socio < s1.nro_socio ) BDII


Descargar ppt "Base de Datos II. Consultas Anidadas Las consultas anidadas se estructuran definiendo una consulta dentro de otra El orden de ejecución está sujeta a."

Presentaciones similares


Anuncios Google