SlideShare una empresa de Scribd logo

0506 Sql Subconsultas

Aureny Magaly Uc Miam
Aureny Magaly Uc Miam
Aureny Magaly Uc MiamProfesor Tiempo Completo en Universidad Tecnológica Metropolitana

0506 Sql Subconsultas

1 de 4
Descargar para leer sin conexión
S QL                                                                     SUBCONSULTAS


Subconsultas

                            Definición y clasificaciones
                            Donde emplearlas
                            Condiciones de comparación y subconsultas
                            Ejemplos

Definición y clasificaciones

Una subconsulta es una instrucción SQL llamada desde otra instrucción o desde otra
subconsulta. Las subconsultas pueden devolver varios conjuntos de resultados, pudiéndose
clasificar basándose en estos conjuntos como:

              Una fila/una columna
              Múltiples filas/una única columna
              Múltiples columnas/una única o múltiples filas

Una subconsulta puede tener un formato regular o correlacionado.

              Subconsulta regular.
              Un consulta contenida dentro de otra sin que haya relación entre ambas.

              Subconsulta correlacionadas:
              Correlacionado implica una conexión entre la consulta –o subconsulta- que
              invoca la subconsulta y la propia subconsulta. Hay que tener en cuenta, que la
              columna correlacionada puede ser pasada de la consulta superior (la externa)
              a la inferior (la subconsulta interna) y NO al revés. La subconsulta
              correlacionada depende siempre de la consulta externa.

Las subconsultas pueden definirse también como anidadas o vistas en línea.

              Subconsulta anidada:
              Las subconsultas pueden llamar a otras subconsultas, y estas a su vez a
              otras, así sucesivamente, sin limitación.

              Subconsulta vista en línea:
              Es una subconsulta embebida dentro de la cláusula FROM de la instrucción
              SELECT que invoca la subconsulta.

Las subconsultas pueden pertenecer a la combinación de varios tipos de clasificaciones.


Donde emplearlas

Las subconsultas pueden emplearse en casi todas las instrucciones SQL, en cualquier
comando SQL donde se pueda emplear una expresión. El siguiente listado muestra las
instrucciones SQL donde puede emplearse una subconsulta:

              Cláusula SELECT
              Cláusula WHERE
              Cláusula ORDER BY
              Cláusula FROM (vista en línea)


                                  CURSO 2005-06                                           19
S QL                                                                    SUBCONSULTAS


              Cláusula VALUES de la instrucción INSERT
              Cláusula SET de la instrucción UPDATE


Condiciones de comparación y subconsultas

Las subconsultas pueden aplicarse a muchas condiciones de comparación. Dependiendo del
tipo de operador que empleemos, estará permitido un tipo de subconsulta u otro, en función
del tipo de resultados que esta devuelva.

       SIMPLE               (subconsulta) {= | != } (subconsulta)
       LIKE                 (subconsulta) LIKE (subconsulta)
       PERTENENCIA          (subconsulta)[NOT] IN (subconsulta)
       EXISTENCIA           [NOT] EXIST (subconsulta)
       RANGO                (subconsulta) BETWEEN (subconsulta) AND (subconsulta)
       AGRUPACIÓN           (subconsulta) {= | != | > | < | >= | <= } {ANY | SOME | ALL}
       (subconsulta)

Los operadores marcados, requieren subconsultas que devuelvan una única fila, como son
la igualdad/desigualdad, los operadores de comparación (<,>,>=,<=), así como los
operadores LIKE y BETWEEN.

El resto de operadores permiten como resultado de la subconsulta múltiples filas: IN, NOT
IN, EXIST, NOT EXIST, además de los operadores de comparación combinados con ANY,
SOME o ALL.

Una subconsulta en si misma, es generalmente equivalente sintácticamente a una
instrucción SELECT.


Ejemplos:

A continuación vamos a ver unos ejemplos de subconsultas:

Subconsultas de una única fila:

Es una subconsulta que devuelve como resultado una única fila.

Ejemplo:

       SELECT *
       FROM estudiantes
       WHERE población= (SELECT población
                          FROM estudiantes
                          WHERE dni=’33445667’);


Subconsultas de una múltiples filas:

Son subconsultas que devuelven como resultado múltiples filas. Es importante tener en
cuenta que pueden no devolver ninguna fila, y que el conjunto vacío es un resultado válido
en la pertenencia, existencia o condiciones de agrupación de comparación.




20                                CURSO 2005-06
S QL                                                                     SUBCONSULTAS


Ejemplos:

       SELECT *
       FROM profesores
       WHERE población IN (SELECT población
                           FROM estudiantes
                           WHERE edad>25);

       SELECT *
       FROM estudiantes
       WHERE edad > ALL (SELECT edad
                          FROM profesores
                          WHERE dpto=’Matemáticas’);



Subconsultas de múltiples columnas:

Una subconsulta de múltiples columnas, puede devolver una única o múltiples filas.
Devuelve más de una columna para cada fila. Suele emplearse para validar un conjunto de
columnas con otro en la cláusula WHERE, o como vista en línea en la cláusula FROM.

Ejemplos:

       SELECT *
       FROM profesores
       WHERE (nombre, apellidos) IN (SELECT nombre, apellidos
                                   FROM estudiantes
                                   WHERE edad>25);

       SELECT E.nia, nombre, apellidos, media
       FROM estudiantes E, (SELECT nia, AVG(nota) MEDIA
                            FROM suspendidos
                            GROUP BY nia
                            HAVING AVG(nota)<3) SUSP3
       WHERE E.nia=SUSP3.nia;


       CREATE TABLE medias AS (SELECT dni, AVG(notas) media
                                FROM estudiantes
                                GROUP BY dni);


Subconsultas correlacionadas:

Las subconsultas correlacionadas permiten la correlación o coincidencia de valores entre las
columnas de la consulta externa y la subconsulta. La consulta externa puede pasar el valor
de una columna a la subconsulta, no siendo posible al revés. Las consultas se van
ejecutando de izquierda a derecha y de arriba abajo. Las subconsultas internas se ejecutan
antes que las invoquen las externas.

Ejemplo:

       SELECT nombre
       FROM estudiante E
       WHERE ‘01/01/02’ > ALL (SELECT fecha_matricula
                                  FROM asigunaturas A
                                  WHERE A.nia=E.nia);




                                  CURSO 2005-06                                          21
S QL                                                                                 SUBCONSULTAS


Subconsultas anidadas:

Una subconsulta anidada es una subconsulta embebida dentro de otra subconsulta.

Ejemplo:

         SELECT nombre, apellidos
         FROM estudiante E
         WHERE nia IN (SELECT nia
                      FROM matricula
                      WHERE codasig IN (SELECT codasig
                                          FROM asignaturas
                                          GROUP BY codasig
                                          HAVING COUNT(DISTINCT nia)>100));

Subconsultas vista en línea:

Una subconsultas llamada vista en línea, es una subconsulta embebida en la cláusula FROM
de una instrucción SELECT, como si de una tabla o vista se tratara.

Ejemplos:

         SELECT E.nia, nombre, apellidos, Num_asig “Número asignaturas”
         FROM estudiante E, (SELECT nia, count(*) Num_asig
                              FROM matricula
                              GROUP BY nia
                              HAVING COUNT(*)>10) AUX
         WHERE E.nia=AUX.nia;


     UPDATE facturas
     SET total=(SELECT importe
                  FROM (SELECT Fac.codfac codigo, total_fac+total_fac*iva/100-total_fac*dto/100 Importe
                         FROM facturas Fac, (SELECT F.codfac, SUM(L.subtotal) Total_Fac
                                                 FROM facturas F,
                                                          (SELECT codfac, (precio*cant)-(precio*cant*dto/100)
                                                 Subtotal
                                                          FROM lineas_fac) L
                                                          WHERE F.codfac=L.codfac
                                                          GROUP BY F.codfac) Fac_Tot
                            WHERE Fac.codfac=Fac_Tot.codfac) AUX
     WHERE Aux.codigo=facturas.codfac)




22                                      CURSO 2005-06

Recomendados

Más contenido relacionado

La actualidad más candente

La actualidad más candente (12)

Sql
SqlSql
Sql
 
Capitulo3 sql consultas
Capitulo3 sql consultasCapitulo3 sql consultas
Capitulo3 sql consultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
SELECT BASICO _
SELECT BASICO _  SELECT BASICO _
SELECT BASICO _
 
Fundamentos sql
Fundamentos sqlFundamentos sql
Fundamentos sql
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Sql Setencias
Sql SetenciasSql Setencias
Sql Setencias
 
SETENCIAS SQL
SETENCIAS SQLSETENCIAS SQL
SETENCIAS SQL
 
Funciones de grupo
Funciones de grupoFunciones de grupo
Funciones de grupo
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
EeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
 
Curso SQL - Leccion 2
Curso SQL - Leccion 2Curso SQL - Leccion 2
Curso SQL - Leccion 2
 

Similar a 0506 Sql Subconsultas (20)

Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas tecnica de archivos
Subconsultas tecnica de archivosSubconsultas tecnica de archivos
Subconsultas tecnica de archivos
 
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
 
Sub consultas
Sub consultasSub consultas
Sub consultas
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_
 
Yersin manuel hernandez mendoza
Yersin manuel hernandez mendozaYersin manuel hernandez mendoza
Yersin manuel hernandez mendoza
 
Bdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultasBdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultas
 
Cursores
CursoresCursores
Cursores
 
Operaciones basicas de sql
Operaciones basicas de sqlOperaciones basicas de sql
Operaciones basicas de sql
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_
 
Clase 3 El lenguaje DML de SQL
Clase 3 El lenguaje DML de SQLClase 3 El lenguaje DML de SQL
Clase 3 El lenguaje DML de SQL
 
Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
 

Último

IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024Isidro Navarro
 
Ejercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. NavegadoresEjercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. NavegadoresDannyErazo5
 
Práctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdfPráctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdfFernandoCalapaqui
 
Diagramas de Comportamiento: Caso Práctico
Diagramas  de Comportamiento: Caso PrácticoDiagramas  de Comportamiento: Caso Práctico
Diagramas de Comportamiento: Caso PrácticoMaricarmen Sánchez Ruiz
 
Prueba Objetiva del Parcial 1_Grupo 1.pdf
Prueba Objetiva del Parcial 1_Grupo 1.pdfPrueba Objetiva del Parcial 1_Grupo 1.pdf
Prueba Objetiva del Parcial 1_Grupo 1.pdfFernandoCalapaqui
 
Documento del proyecto final............
Documento del proyecto final............Documento del proyecto final............
Documento del proyecto final............DannyErazo5
 
Práctica 2. Uso de Marcadores Sociales
Práctica 2.   Uso de Marcadores SocialesPráctica 2.   Uso de Marcadores Sociales
Práctica 2. Uso de Marcadores SocialesFernandoCalapaqui
 
Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...DannyErazo5
 
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptxDIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptxivelezutrera
 
Diapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdfDiapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdfDannyErazo5
 
Prueba objetiva - Parcial 1_Grupo 11.pdf
Prueba objetiva - Parcial 1_Grupo 11.pdfPrueba objetiva - Parcial 1_Grupo 11.pdf
Prueba objetiva - Parcial 1_Grupo 11.pdfFernandoCalapaqui
 
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdfPráctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdfFernandoCalapaqui
 
Premio (tecnología actividad)combinación...
Premio (tecnología actividad)combinación...Premio (tecnología actividad)combinación...
Premio (tecnología actividad)combinación...NicolleAndrade7
 
Detalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptxDetalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptxLuisChili1
 
Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.
Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.
Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.FernandoCalapaqui
 
Breve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e InstrumentosBreve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e Instrumentosdarkcrow08
 
Ensayo sobre "La internet y su evolución"
Ensayo sobre "La internet y su evolución"Ensayo sobre "La internet y su evolución"
Ensayo sobre "La internet y su evolución"DannyErazo5
 
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALESFUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALESNoemiZavalzaValderrr
 
Plan_de_Clases..........................
Plan_de_Clases..........................Plan_de_Clases..........................
Plan_de_Clases..........................DannyErazo5
 
Tarea 1. Ensayo sobre "La sociedad de la ignorancia"
Tarea 1. Ensayo sobre "La sociedad de la ignorancia"Tarea 1. Ensayo sobre "La sociedad de la ignorancia"
Tarea 1. Ensayo sobre "La sociedad de la ignorancia"ferpatfut1109
 

Último (20)

IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024
 
Ejercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. NavegadoresEjercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. Navegadores
 
Práctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdfPráctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdf
 
Diagramas de Comportamiento: Caso Práctico
Diagramas  de Comportamiento: Caso PrácticoDiagramas  de Comportamiento: Caso Práctico
Diagramas de Comportamiento: Caso Práctico
 
Prueba Objetiva del Parcial 1_Grupo 1.pdf
Prueba Objetiva del Parcial 1_Grupo 1.pdfPrueba Objetiva del Parcial 1_Grupo 1.pdf
Prueba Objetiva del Parcial 1_Grupo 1.pdf
 
Documento del proyecto final............
Documento del proyecto final............Documento del proyecto final............
Documento del proyecto final............
 
Práctica 2. Uso de Marcadores Sociales
Práctica 2.   Uso de Marcadores SocialesPráctica 2.   Uso de Marcadores Sociales
Práctica 2. Uso de Marcadores Sociales
 
Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...
 
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptxDIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
 
Diapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdfDiapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdf
 
Prueba objetiva - Parcial 1_Grupo 11.pdf
Prueba objetiva - Parcial 1_Grupo 11.pdfPrueba objetiva - Parcial 1_Grupo 11.pdf
Prueba objetiva - Parcial 1_Grupo 11.pdf
 
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdfPráctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
 
Premio (tecnología actividad)combinación...
Premio (tecnología actividad)combinación...Premio (tecnología actividad)combinación...
Premio (tecnología actividad)combinación...
 
Detalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptxDetalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptx
 
Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.
Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.
Tarea 1. Desarrollo de un mapa conceptual con herramientas colaborativas.
 
Breve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e InstrumentosBreve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e Instrumentos
 
Ensayo sobre "La internet y su evolución"
Ensayo sobre "La internet y su evolución"Ensayo sobre "La internet y su evolución"
Ensayo sobre "La internet y su evolución"
 
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALESFUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES
FUNCIONES DEFINIDAS POR EL USUARIO Y VARIABLES SUPERGLOBALES
 
Plan_de_Clases..........................
Plan_de_Clases..........................Plan_de_Clases..........................
Plan_de_Clases..........................
 
Tarea 1. Ensayo sobre "La sociedad de la ignorancia"
Tarea 1. Ensayo sobre "La sociedad de la ignorancia"Tarea 1. Ensayo sobre "La sociedad de la ignorancia"
Tarea 1. Ensayo sobre "La sociedad de la ignorancia"
 

0506 Sql Subconsultas

  • 1. S QL SUBCONSULTAS Subconsultas Definición y clasificaciones Donde emplearlas Condiciones de comparación y subconsultas Ejemplos Definición y clasificaciones Una subconsulta es una instrucción SQL llamada desde otra instrucción o desde otra subconsulta. Las subconsultas pueden devolver varios conjuntos de resultados, pudiéndose clasificar basándose en estos conjuntos como: Una fila/una columna Múltiples filas/una única columna Múltiples columnas/una única o múltiples filas Una subconsulta puede tener un formato regular o correlacionado. Subconsulta regular. Un consulta contenida dentro de otra sin que haya relación entre ambas. Subconsulta correlacionadas: Correlacionado implica una conexión entre la consulta –o subconsulta- que invoca la subconsulta y la propia subconsulta. Hay que tener en cuenta, que la columna correlacionada puede ser pasada de la consulta superior (la externa) a la inferior (la subconsulta interna) y NO al revés. La subconsulta correlacionada depende siempre de la consulta externa. Las subconsultas pueden definirse también como anidadas o vistas en línea. Subconsulta anidada: Las subconsultas pueden llamar a otras subconsultas, y estas a su vez a otras, así sucesivamente, sin limitación. Subconsulta vista en línea: Es una subconsulta embebida dentro de la cláusula FROM de la instrucción SELECT que invoca la subconsulta. Las subconsultas pueden pertenecer a la combinación de varios tipos de clasificaciones. Donde emplearlas Las subconsultas pueden emplearse en casi todas las instrucciones SQL, en cualquier comando SQL donde se pueda emplear una expresión. El siguiente listado muestra las instrucciones SQL donde puede emplearse una subconsulta: Cláusula SELECT Cláusula WHERE Cláusula ORDER BY Cláusula FROM (vista en línea) CURSO 2005-06 19
  • 2. S QL SUBCONSULTAS Cláusula VALUES de la instrucción INSERT Cláusula SET de la instrucción UPDATE Condiciones de comparación y subconsultas Las subconsultas pueden aplicarse a muchas condiciones de comparación. Dependiendo del tipo de operador que empleemos, estará permitido un tipo de subconsulta u otro, en función del tipo de resultados que esta devuelva. SIMPLE (subconsulta) {= | != } (subconsulta) LIKE (subconsulta) LIKE (subconsulta) PERTENENCIA (subconsulta)[NOT] IN (subconsulta) EXISTENCIA [NOT] EXIST (subconsulta) RANGO (subconsulta) BETWEEN (subconsulta) AND (subconsulta) AGRUPACIÓN (subconsulta) {= | != | > | < | >= | <= } {ANY | SOME | ALL} (subconsulta) Los operadores marcados, requieren subconsultas que devuelvan una única fila, como son la igualdad/desigualdad, los operadores de comparación (<,>,>=,<=), así como los operadores LIKE y BETWEEN. El resto de operadores permiten como resultado de la subconsulta múltiples filas: IN, NOT IN, EXIST, NOT EXIST, además de los operadores de comparación combinados con ANY, SOME o ALL. Una subconsulta en si misma, es generalmente equivalente sintácticamente a una instrucción SELECT. Ejemplos: A continuación vamos a ver unos ejemplos de subconsultas: Subconsultas de una única fila: Es una subconsulta que devuelve como resultado una única fila. Ejemplo: SELECT * FROM estudiantes WHERE población= (SELECT población FROM estudiantes WHERE dni=’33445667’); Subconsultas de una múltiples filas: Son subconsultas que devuelven como resultado múltiples filas. Es importante tener en cuenta que pueden no devolver ninguna fila, y que el conjunto vacío es un resultado válido en la pertenencia, existencia o condiciones de agrupación de comparación. 20 CURSO 2005-06
  • 3. S QL SUBCONSULTAS Ejemplos: SELECT * FROM profesores WHERE población IN (SELECT población FROM estudiantes WHERE edad>25); SELECT * FROM estudiantes WHERE edad > ALL (SELECT edad FROM profesores WHERE dpto=’Matemáticas’); Subconsultas de múltiples columnas: Una subconsulta de múltiples columnas, puede devolver una única o múltiples filas. Devuelve más de una columna para cada fila. Suele emplearse para validar un conjunto de columnas con otro en la cláusula WHERE, o como vista en línea en la cláusula FROM. Ejemplos: SELECT * FROM profesores WHERE (nombre, apellidos) IN (SELECT nombre, apellidos FROM estudiantes WHERE edad>25); SELECT E.nia, nombre, apellidos, media FROM estudiantes E, (SELECT nia, AVG(nota) MEDIA FROM suspendidos GROUP BY nia HAVING AVG(nota)<3) SUSP3 WHERE E.nia=SUSP3.nia; CREATE TABLE medias AS (SELECT dni, AVG(notas) media FROM estudiantes GROUP BY dni); Subconsultas correlacionadas: Las subconsultas correlacionadas permiten la correlación o coincidencia de valores entre las columnas de la consulta externa y la subconsulta. La consulta externa puede pasar el valor de una columna a la subconsulta, no siendo posible al revés. Las consultas se van ejecutando de izquierda a derecha y de arriba abajo. Las subconsultas internas se ejecutan antes que las invoquen las externas. Ejemplo: SELECT nombre FROM estudiante E WHERE ‘01/01/02’ > ALL (SELECT fecha_matricula FROM asigunaturas A WHERE A.nia=E.nia); CURSO 2005-06 21
  • 4. S QL SUBCONSULTAS Subconsultas anidadas: Una subconsulta anidada es una subconsulta embebida dentro de otra subconsulta. Ejemplo: SELECT nombre, apellidos FROM estudiante E WHERE nia IN (SELECT nia FROM matricula WHERE codasig IN (SELECT codasig FROM asignaturas GROUP BY codasig HAVING COUNT(DISTINCT nia)>100)); Subconsultas vista en línea: Una subconsultas llamada vista en línea, es una subconsulta embebida en la cláusula FROM de una instrucción SELECT, como si de una tabla o vista se tratara. Ejemplos: SELECT E.nia, nombre, apellidos, Num_asig “Número asignaturas” FROM estudiante E, (SELECT nia, count(*) Num_asig FROM matricula GROUP BY nia HAVING COUNT(*)>10) AUX WHERE E.nia=AUX.nia; UPDATE facturas SET total=(SELECT importe FROM (SELECT Fac.codfac codigo, total_fac+total_fac*iva/100-total_fac*dto/100 Importe FROM facturas Fac, (SELECT F.codfac, SUM(L.subtotal) Total_Fac FROM facturas F, (SELECT codfac, (precio*cant)-(precio*cant*dto/100) Subtotal FROM lineas_fac) L WHERE F.codfac=L.codfac GROUP BY F.codfac) Fac_Tot WHERE Fac.codfac=Fac_Tot.codfac) AUX WHERE Aux.codigo=facturas.codfac) 22 CURSO 2005-06