SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
SUB CONSULTA
DEFINICION:
 Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT. Normalmente se utilizan para
filtrar una clausula WHERE o HAVING con el conjunto de resultados de la subconsulta, aunque también pueden
utilizarse en la lista de selección.
 Por ejemplo podríamos consultar el alquiler último de un cliente.

SELECT CO_CLIENTE, NOMBRE, MARCA, MODDELO
FROM ALQUILERES
WHERE CO_CLIENTE = 1
AND FECHA_ALQUILER = (SELECTMAX(FECHA_ALQUILER)
                              FROM ALQUILERES
                              WHERE CO_CLIENTE = 1)

  En este caso, la subconsulta se ejecuta en primer lugar, obteniendo el valor de la máxima fecha de alquiler, y
posteriormente se obtienen los datos de la consulta principal.
  Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre
paréntesis.
  La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o en la cláusula HAVING de la
consulta principal.

Tiene las siguientes restricciones:
          No puede contener la cláusula ORDER BY
          No puede ser la UNION de varias sentencias SELECT
          Si la subconsulta aparece en la lista de selección, está asociada a un operador igual "=" solo puede devolver un
          único registro.
Referencias.Externas
 A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia al valor de una columna de la fila
actual en la consulta principal, ese nombre de columna se denomina referencia externa. (Es un campo que aparece en la
subconsulta pero se refiere a la una de las tablas designadas en la consulta principal)

Cuando se ejecuta una consulta que contiene una subconsulta con referencias externas, la subconsulta se ejecuta por
cada fila de la consulta principal.
 En este ejemplo la subconsulta aparece en la lista de selección, ejecutándose una vez por cada fila que devuelve la
consulta principal.

SELECT CO_EMPLEADO,
   NOMBRE,
   (SELECTMIN(FECHA_NOMINA)
           FROM NOMINAS
           WHERE CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) PRIMERA_NOMINA
FROM EMPLEADOS;
Anidar subconsulta

Las subconsulta pueden anidarse de forma que una subconsulta aparezca en la cláusula WHERE (por ejemplo) de otra
subconsulta que a su vez forma parte de otra consulta principal.

SELECT CO_EMPLEADO,
    EMPLEADOS
FROM EMPLEADOS
WHERE CO_EMPLEADO IN(SELECT CO_EMPLEADO
            FROM NOMINAS
            WHERE ESTADO IN ( SELECT ESTADO
                       FROM ESTADOS_NOMINAS
                       WHERE EMITIDO = 'S'
                       AND PAGADO = 'N')
            )
 Los resultados que se obtienen con subconsulta normalmente pueden conseguirse a través de consultas combinadas
(JOIN).

SELECT CO_EMPLEADO,
NOMBRE
FROM EMPLEADOS
WHERE ESTADO IN(SELECT ESTADO
                       FROM ESTADOS
                       WHERE ACTIVO = 'S')
  Podrá escribirse como:

SELECT CO_EMPLEADO,
    NOMBRE
FROM EMPLEADOS, ESTADOS
WHERE EMPLEADOS.ESTADO = ESTADOS.ESTADO
 AND ESTADOS.ACTIVO = 'S'


Normalmente es más rápido utilizar un JOIN en lugar de una subconsulta, aunque esto depende sobre todo del diseño
de la base de datos y del volumen de datos que tenga.
Utilización de subconsulta con UPDATE
Podemos utilizar subconsulta también en consultas de actualización conjuntamente con UPDATE. Normalmente se
utilizan para "copiar" el valor de otra tabla.

UPDATE EMPLEADOS
SET SALARIO_BRUTO = (SELECTSUM(SALIRO_BRUTO)
          FROM NOMINAS
          WHERE NOMINAS.CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO)
WHERE SALARIO_BRUTO IS NULL

La función EXISTS
  EXISTS es una función SQL que devuelve verdadero cuando una subconsulta retorna al menos una fila.

SELECT CO_CLIENTE,
    NOMBRE
FROM CLIENTES
WHERE EXISTS( SELECT *
                       FROM MOROSOS
                       WHERE CO_CLIENTE = CLIENTES.CO_CLIENTE
           AND PAGADO = 'N')
  La función EXISTS puede ser utilizada en cualquier sentencia SQL válida, SELECT, UPDATE,INSERTo DELETE.
TIPOS DE SUB CONSULTAS
1). SUBCONSULTA DE UNA SOLA FILA                                 2). SUBCONSULTA DE VARIAS FILA

CONSULTA PRINCIPAL                                               CONSULTA PRINCIPAL
                            DE VUELVE                                                      DE VUELVE
SUB CONSULTA                               ST - CLERK            SUB CONSULTA                                ST - CLERK
                                                                                                             SA - MAN


1). SUBCONSULTA DE UNA SOLA FILA                                2). SUBCONSULTA DE VARIAS FILA S
Devuelven una sola fila                                          Devuelven más de una fila
Utilizan operadores de comparación de una sola fila              Utilizan operadores de comparación de varias filas
Operador Significado
=            Igual que                                          Operador   Significado
>            Mayor que                                          IN         Igual a cualquier miembro de la
=>           Mayor o igual que                                             lista
<            Menor que                                          ANY        Compara el valor con cada valor
<=           Menor o igual que                                             de vuelto por la sub consulta
<>           No igual a                                         ALL        Compara el valor con todos los
                                                                           valores devueltos por la sub
                                                                           consulta



                                              Operadores de conjuntos
SQL Server 2008
En las expresiones multidimensionales (MDX), los operadores de conjuntos ejecutan operaciones en miembros o
conjuntos y devuelven un conjunto. Por lo general, los operadores de conjuntos se utilizan como alternativa a las
distintas funciones de conjuntos en expresiones MDX.

MDX es compatible con los operadores de conjuntos que se indican en la siguiente tabla.
Operador      Descripción

- (Except)     Devuelve la diferencia entre dos conjuntos y elimina los miembros duplicados.
               Este operador es funcionalmente equivalente a la función Except.


*              Devuelve el producto cruzado de dos conjuntos.
(Crossjoin)    Este operador es funcionalmente equivalente a la función Crossjoin.


: (Range)      Devuelve un conjunto en su orden natural, con dos miembros especificados como extremos y todos los
               miembros entre ellos incluidos como miembros del conjunto.


+ (Union)      Devuelve la unión de dos conjuntos y excluye los miembros duplicados.
               Este operador es funcionalmente equivalente a la función Union (MDX).




                                          Usando los operadores SET (Conjunto)
Objetivos:
• Describir los operadores SET (Conjunto)
• Usar un operador SET (Conjunto) para combinar múltiples consultas en
  Una consulta simple
• Controlar el orden de las filas obtenidas
Operadores SET (Conjunto)
Combinan los resultados de dos o más Consultas en un único resultado. Las consultas que contienen operadores SET
(Conjunto) son llamadas consultas compuestas (compound quieres).

Todos los operadores SET tienen la misma precedencia. Si una sentencia SQL Contiene múltiples operadores SET, el
servidor de Oracle evalúa estos de Izquierda a derecha. Se puede hacer uso de los paréntesis para especificar un Orden
explicito de evaluación como pueden ser las consultas que usan el Operador INTERSECT con operadores SET.
Nota: En el diagrama, el color claro representa el resultado de la consulta.

Operador          Obtiene

UNION             Todas las filas distintas seleccionadas por ambas consultas


UNION ALL         Todas las filas seleccionadas por ambas consultas,
                  incluyendo todos los duplicados


INTERSECT         Todas las filas distintas seleccionadas por ambas consultas


MINUS             Todas las filas distintas seleccionadas por la primera
                  sentencia SELECT que no se encuentren en la segunda
                  sentencia SELECT


Operador UNION
El operador UNION obtiene todas las filas seleccionadas por ambas consultas. Use el operador UNION para obtener
todas las filas de múltiples tablas y eliminar cualquier fila duplicada.

Normas a seguir
• El número de columnas y tipo de datos deben ser idénticos en todas las
Sentencias SELECT usadas en las consultas. Los nombres de las
Columnas no necesitan ser idénticas.
• La UNION opera sobre todas las columnas inicialmente seleccionadas.
• Los valores NULOS no son ignorados durante la verificación de
  Duplicados
• El operador IN tiene una mayor precedencia que el operador UNION
• Por defecto, el resultado es ordenado ascendentemente por la primera
Columna de la cláusula SELECT

Operador UNION ALL
Use el operador UNION ALL para obtener todas las filas de múltiples consultas.

Normas a seguir
• Diferente a UNION, las filas duplicadas no son eliminadas y el resultado
No es ordenado por defecto.
• La palabra reservada DISTINCT no puede ser usada

Operador INTERSECT
Use el operador INTERSECT para obtener todas las filas comunes de múltiples consultas.

Normas a seguir
• El número de columnas y tipos de datos de las columnas seleccionadas Inicialmente por la sentencia SELECT, deben ser
 Idénticos en todas las sentencias SELECT usadas en la consulta. El nombre de las consultas
 No necesita ser idéntico.
•.Invertir el orden de las tablas intersecadas no modifica el resultado
•INTERSECT no ignora los valores NULOS


Operador MINUS
Use el operador MINUS para obtener las filas de la primera consulta que no estén presentes en la segunda consulta (la
primera sentencia SELECT MENOS la segunda sentencia SELECT)

Normas a seguir
• El número de columnas y tipos de datos de las columnas de la sentencia SELECT inicial deben ser idénticas en todas las
  Sentencias SELECT usadas en la consulta. Los nombres de las columnas no necesitan ser idénticas.
• Todas las columnas en la cláusula WHERE deben estar en la cláusula SELECT para que el operador MINUS trabaje.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Resumen sql-oracle
Resumen sql-oracleResumen sql-oracle
Resumen sql-oracle
 
SELECT BASICO _
SELECT BASICO _  SELECT BASICO _
SELECT BASICO _
 
Seleccion de datos
Seleccion de datosSeleccion de datos
Seleccion de datos
 
Curso SQL - Leccion 2
Curso SQL - Leccion 2Curso SQL - Leccion 2
Curso SQL - Leccion 2
 
Curso SQL - Leccion 10
Curso SQL - Leccion 10Curso SQL - Leccion 10
Curso SQL - Leccion 10
 
Inserción de datos y selección de datos
Inserción de datos y selección de datosInserción de datos y selección de datos
Inserción de datos y selección de datos
 
Cliente servidor consultas sql
Cliente servidor consultas sqlCliente servidor consultas sql
Cliente servidor consultas sql
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Curso SQL - Leccion 3
Curso SQL - Leccion 3  Curso SQL - Leccion 3
Curso SQL - Leccion 3
 
minas
minas minas
minas
 
Eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
EeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
 
Actualización de bases de datos en MySQL
Actualización de bases de datos en MySQLActualización de bases de datos en MySQL
Actualización de bases de datos en MySQL
 

Similar a Sub consultas

Similar a Sub consultas (20)

Presentación
PresentaciónPresentación
Presentación
 
Sub consultas
Sub consultasSub consultas
Sub consultas
 
Presentacion1.............
Presentacion1.............Presentacion1.............
Presentacion1.............
 
MANEJO DE SENTENCIAS DE RECUPERACIÓN
MANEJO DE SENTENCIAS DE RECUPERACIÓNMANEJO DE SENTENCIAS DE RECUPERACIÓN
MANEJO DE SENTENCIAS DE RECUPERACIÓN
 
MANEJO DE SENTENCIAS DE RECUPERACIÓN
MANEJO DE SENTENCIAS DE RECUPERACIÓNMANEJO DE SENTENCIAS DE RECUPERACIÓN
MANEJO DE SENTENCIAS DE RECUPERACIÓN
 
14 structure query language
14 structure query language14 structure query language
14 structure query language
 
BD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQLBD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQL
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
Sql subconsultas
Sql subconsultasSql subconsultas
Sql subconsultas
 
Sub consulta
Sub consultaSub consulta
Sub consulta
 
Sentencia select
Sentencia selectSentencia select
Sentencia select
 
Compiladores1
Compiladores1Compiladores1
Compiladores1
 
Fundamentos sql
Fundamentos sqlFundamentos sql
Fundamentos sql
 
Sql
SqlSql
Sql
 
Grupo1 tics-2 (2)
Grupo1 tics-2 (2)Grupo1 tics-2 (2)
Grupo1 tics-2 (2)
 
Transact sql
Transact sqlTransact sql
Transact sql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 

Último

ERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptx
ERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptxERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptx
ERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptxduquemariact
 
La-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptx
La-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptxLa-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptx
La-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptxMAURICIO329243
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptxTALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptxMartaChaparro1
 
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...JAVIER SOLIS NOYOLA
 
Buenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaBuenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaMarco Camacho
 
Filosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroFilosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroJosé Luis Palma
 
BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................ScarletMedina4
 
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)LizNava123
 
Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Edith Liccioni
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectosTrishGutirrez
 
REGISTRO AUXILIAR 2024.pptx - Primaria EBR
REGISTRO AUXILIAR 2024.pptx - Primaria EBRREGISTRO AUXILIAR 2024.pptx - Primaria EBR
REGISTRO AUXILIAR 2024.pptx - Primaria EBRMarielLorena2
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
Presentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsa
Presentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsaPresentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsa
Presentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsaFarid Abud
 
Revista Apuntes de Historia. Abril 2024.pdf
Revista Apuntes de Historia. Abril 2024.pdfRevista Apuntes de Historia. Abril 2024.pdf
Revista Apuntes de Historia. Abril 2024.pdfapunteshistoriamarmo
 
Biografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro DelgadoBiografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro DelgadoJosé Luis Palma
 

Último (20)

ERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptx
ERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptxERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptx
ERAS Y PERIODOS DEL TIEMPO GEOLOGICO.pptx
 
Mimos _
Mimos                                       _Mimos                                       _
Mimos _
 
La-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptx
La-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptxLa-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptx
La-cosmovision-del-curriculo-educativo-en-Venezuela (1).pptx
 
Act#25 TDLab. Eclipse Solar 08/abril/2024
Act#25 TDLab. Eclipse Solar 08/abril/2024Act#25 TDLab. Eclipse Solar 08/abril/2024
Act#25 TDLab. Eclipse Solar 08/abril/2024
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptxTALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
TALLER_DE_ORALIDAD_LECTURA_ESCRITURA_Y.pptx
 
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO.  Autor y dise...
CARTEL CONMEMORATIVO DEL ECLIPSE SOLAR 2024 EN NAZAS , DURANGO. Autor y dise...
 
Buenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaBuenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria Farmaceutica
 
Filosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroFilosofía del gobierno del general Alfaro
Filosofía del gobierno del general Alfaro
 
BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................
 
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
NIVELES TRÓFICOS DE UN ECOSISTEMA (ecologia)
 
Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos
 
Acuerdo segundo periodo 2024 - Octavo.pptx
Acuerdo segundo periodo 2024 - Octavo.pptxAcuerdo segundo periodo 2024 - Octavo.pptx
Acuerdo segundo periodo 2024 - Octavo.pptx
 
REGISTRO AUXILIAR 2024.pptx - Primaria EBR
REGISTRO AUXILIAR 2024.pptx - Primaria EBRREGISTRO AUXILIAR 2024.pptx - Primaria EBR
REGISTRO AUXILIAR 2024.pptx - Primaria EBR
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
Presentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsa
Presentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsaPresentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsa
Presentacionde Prueba 2024 dsdasdasdsadsadsadsadasdasdsadsa
 
Revista Apuntes de Historia. Abril 2024.pdf
Revista Apuntes de Historia. Abril 2024.pdfRevista Apuntes de Historia. Abril 2024.pdf
Revista Apuntes de Historia. Abril 2024.pdf
 
Biografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro DelgadoBiografía del General Eloy Alfaro Delgado
Biografía del General Eloy Alfaro Delgado
 
El Bullying.
El Bullying.El Bullying.
El Bullying.
 

Sub consultas

  • 1. SUB CONSULTA DEFINICION: Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT. Normalmente se utilizan para filtrar una clausula WHERE o HAVING con el conjunto de resultados de la subconsulta, aunque también pueden utilizarse en la lista de selección. Por ejemplo podríamos consultar el alquiler último de un cliente. SELECT CO_CLIENTE, NOMBRE, MARCA, MODDELO FROM ALQUILERES WHERE CO_CLIENTE = 1 AND FECHA_ALQUILER = (SELECTMAX(FECHA_ALQUILER) FROM ALQUILERES WHERE CO_CLIENTE = 1) En este caso, la subconsulta se ejecuta en primer lugar, obteniendo el valor de la máxima fecha de alquiler, y posteriormente se obtienen los datos de la consulta principal. Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre paréntesis. La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o en la cláusula HAVING de la consulta principal. Tiene las siguientes restricciones: No puede contener la cláusula ORDER BY No puede ser la UNION de varias sentencias SELECT Si la subconsulta aparece en la lista de selección, está asociada a un operador igual "=" solo puede devolver un único registro. Referencias.Externas A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia al valor de una columna de la fila actual en la consulta principal, ese nombre de columna se denomina referencia externa. (Es un campo que aparece en la subconsulta pero se refiere a la una de las tablas designadas en la consulta principal) Cuando se ejecuta una consulta que contiene una subconsulta con referencias externas, la subconsulta se ejecuta por cada fila de la consulta principal. En este ejemplo la subconsulta aparece en la lista de selección, ejecutándose una vez por cada fila que devuelve la consulta principal. SELECT CO_EMPLEADO, NOMBRE, (SELECTMIN(FECHA_NOMINA) FROM NOMINAS WHERE CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) PRIMERA_NOMINA FROM EMPLEADOS; Anidar subconsulta Las subconsulta pueden anidarse de forma que una subconsulta aparezca en la cláusula WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta principal. SELECT CO_EMPLEADO, EMPLEADOS FROM EMPLEADOS WHERE CO_EMPLEADO IN(SELECT CO_EMPLEADO FROM NOMINAS WHERE ESTADO IN ( SELECT ESTADO FROM ESTADOS_NOMINAS WHERE EMITIDO = 'S' AND PAGADO = 'N') ) Los resultados que se obtienen con subconsulta normalmente pueden conseguirse a través de consultas combinadas (JOIN). SELECT CO_EMPLEADO,
  • 2. NOMBRE FROM EMPLEADOS WHERE ESTADO IN(SELECT ESTADO FROM ESTADOS WHERE ACTIVO = 'S') Podrá escribirse como: SELECT CO_EMPLEADO, NOMBRE FROM EMPLEADOS, ESTADOS WHERE EMPLEADOS.ESTADO = ESTADOS.ESTADO AND ESTADOS.ACTIVO = 'S' Normalmente es más rápido utilizar un JOIN en lugar de una subconsulta, aunque esto depende sobre todo del diseño de la base de datos y del volumen de datos que tenga. Utilización de subconsulta con UPDATE Podemos utilizar subconsulta también en consultas de actualización conjuntamente con UPDATE. Normalmente se utilizan para "copiar" el valor de otra tabla. UPDATE EMPLEADOS SET SALARIO_BRUTO = (SELECTSUM(SALIRO_BRUTO) FROM NOMINAS WHERE NOMINAS.CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) WHERE SALARIO_BRUTO IS NULL La función EXISTS EXISTS es una función SQL que devuelve verdadero cuando una subconsulta retorna al menos una fila. SELECT CO_CLIENTE, NOMBRE FROM CLIENTES WHERE EXISTS( SELECT * FROM MOROSOS WHERE CO_CLIENTE = CLIENTES.CO_CLIENTE AND PAGADO = 'N') La función EXISTS puede ser utilizada en cualquier sentencia SQL válida, SELECT, UPDATE,INSERTo DELETE.
  • 3. TIPOS DE SUB CONSULTAS 1). SUBCONSULTA DE UNA SOLA FILA 2). SUBCONSULTA DE VARIAS FILA CONSULTA PRINCIPAL CONSULTA PRINCIPAL DE VUELVE DE VUELVE SUB CONSULTA ST - CLERK SUB CONSULTA ST - CLERK SA - MAN 1). SUBCONSULTA DE UNA SOLA FILA 2). SUBCONSULTA DE VARIAS FILA S Devuelven una sola fila Devuelven más de una fila Utilizan operadores de comparación de una sola fila Utilizan operadores de comparación de varias filas Operador Significado = Igual que Operador Significado > Mayor que IN Igual a cualquier miembro de la => Mayor o igual que lista < Menor que ANY Compara el valor con cada valor <= Menor o igual que de vuelto por la sub consulta <> No igual a ALL Compara el valor con todos los valores devueltos por la sub consulta Operadores de conjuntos SQL Server 2008 En las expresiones multidimensionales (MDX), los operadores de conjuntos ejecutan operaciones en miembros o conjuntos y devuelven un conjunto. Por lo general, los operadores de conjuntos se utilizan como alternativa a las distintas funciones de conjuntos en expresiones MDX. MDX es compatible con los operadores de conjuntos que se indican en la siguiente tabla. Operador Descripción - (Except) Devuelve la diferencia entre dos conjuntos y elimina los miembros duplicados. Este operador es funcionalmente equivalente a la función Except. * Devuelve el producto cruzado de dos conjuntos. (Crossjoin) Este operador es funcionalmente equivalente a la función Crossjoin. : (Range) Devuelve un conjunto en su orden natural, con dos miembros especificados como extremos y todos los miembros entre ellos incluidos como miembros del conjunto. + (Union) Devuelve la unión de dos conjuntos y excluye los miembros duplicados. Este operador es funcionalmente equivalente a la función Union (MDX). Usando los operadores SET (Conjunto) Objetivos: • Describir los operadores SET (Conjunto) • Usar un operador SET (Conjunto) para combinar múltiples consultas en Una consulta simple • Controlar el orden de las filas obtenidas
  • 4. Operadores SET (Conjunto) Combinan los resultados de dos o más Consultas en un único resultado. Las consultas que contienen operadores SET (Conjunto) son llamadas consultas compuestas (compound quieres). Todos los operadores SET tienen la misma precedencia. Si una sentencia SQL Contiene múltiples operadores SET, el servidor de Oracle evalúa estos de Izquierda a derecha. Se puede hacer uso de los paréntesis para especificar un Orden explicito de evaluación como pueden ser las consultas que usan el Operador INTERSECT con operadores SET. Nota: En el diagrama, el color claro representa el resultado de la consulta. Operador Obtiene UNION Todas las filas distintas seleccionadas por ambas consultas UNION ALL Todas las filas seleccionadas por ambas consultas, incluyendo todos los duplicados INTERSECT Todas las filas distintas seleccionadas por ambas consultas MINUS Todas las filas distintas seleccionadas por la primera sentencia SELECT que no se encuentren en la segunda sentencia SELECT Operador UNION El operador UNION obtiene todas las filas seleccionadas por ambas consultas. Use el operador UNION para obtener todas las filas de múltiples tablas y eliminar cualquier fila duplicada. Normas a seguir • El número de columnas y tipo de datos deben ser idénticos en todas las Sentencias SELECT usadas en las consultas. Los nombres de las Columnas no necesitan ser idénticas. • La UNION opera sobre todas las columnas inicialmente seleccionadas. • Los valores NULOS no son ignorados durante la verificación de Duplicados • El operador IN tiene una mayor precedencia que el operador UNION • Por defecto, el resultado es ordenado ascendentemente por la primera Columna de la cláusula SELECT Operador UNION ALL Use el operador UNION ALL para obtener todas las filas de múltiples consultas. Normas a seguir • Diferente a UNION, las filas duplicadas no son eliminadas y el resultado
  • 5. No es ordenado por defecto. • La palabra reservada DISTINCT no puede ser usada Operador INTERSECT Use el operador INTERSECT para obtener todas las filas comunes de múltiples consultas. Normas a seguir • El número de columnas y tipos de datos de las columnas seleccionadas Inicialmente por la sentencia SELECT, deben ser Idénticos en todas las sentencias SELECT usadas en la consulta. El nombre de las consultas No necesita ser idéntico. •.Invertir el orden de las tablas intersecadas no modifica el resultado •INTERSECT no ignora los valores NULOS Operador MINUS Use el operador MINUS para obtener las filas de la primera consulta que no estén presentes en la segunda consulta (la primera sentencia SELECT MENOS la segunda sentencia SELECT) Normas a seguir • El número de columnas y tipos de datos de las columnas de la sentencia SELECT inicial deben ser idénticas en todas las Sentencias SELECT usadas en la consulta. Los nombres de las columnas no necesitan ser idénticas. • Todas las columnas en la cláusula WHERE deben estar en la cláusula SELECT para que el operador MINUS trabaje.