SlideShare una empresa de Scribd logo
Unidad Didáctica 9. Subconsultas
JOSÉ JUAN SÁNCHEZ HERNÁNDEZ
IES Celia Viñas (Almería) - 2018/2019
Índice general
1 Subconsultas 2
1.1 Tipos de subconsultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Subconsultas en la cláusula WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Subconsultas en la cláusula HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Subconsultas en la cláusula FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Subconsultas en la cláusula SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Operadores que podemos usar en las subconsultas 5
2.1 Operadores básicos de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Subconsultas con ALL y ANY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Subconsultas con IN y NOT IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Subconsultas con EXISTS y NOT EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Errores comunes 9
3.1 Número incorrecto de filas en la subconsulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Referencias 10
5 Licencia 11
1
Capítulo 1
Subconsultas
Una subconsulta es una consulta anidada dentro de otra consulta.
Debe tener en cuenta que no existe una única solución para resolver una contulta en SQL. En esta unidad vamos
a estudiar cómo podemos resolver haciendo uso de subconsultas, algunas de las consultas que hemos resuelto
en las unidades anteriores.
1.1 Tipos de subconsultas
El estándar SQL define tres tipos de subconsultas:
• Subconsultas de fila. Son aquellas que devuelven más de una columna pero una única fila.
• Subconsultas de tabla. Son aquellas que devuelve una o varias columnas y cero o varias filas.
• Subconsultas escalares. Son aquellas que devuelven una columna y una fila.
1.2 Subconsultas en la cláusula WHERE
Por ejemplo, suponga que queremos conocer el nombre del producto que tiene el mayor precio. En este caso
podríamos realizar una primera consulta para buscar cuál es el valor del precio máximo y otra segunda consulta
para buscar el nombre del producto cuyo precio coincide con el valor del precio máximo. La consulta sería la
siguiente:
SELECT nombre
FROM producto
WHERE precio = (SELECT MAX(precio) FROM producto)
En este caso sólo hay un nivel de anidamiento entre consultas pero pueden existir varios niveles de anidamien-
to.
2
Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019
1.3 Subconsultas en la cláusula HAVING
Ejemplo: Devuelve un listado con todos los nombres de los fabricantes que tienen el mismo número de pro-
ductos que el fabricante Asus.
SELECT fabricante.nombre, COUNT(producto.codigo)
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
GROUP BY fabricante.codigo
HAVING COUNT(producto.codigo) >= (
SELECT COUNT(producto.codigo)
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
WHERE fabricante.nombre = 'Asus');
1.4 Subconsultas en la cláusula FROM
Ejemplo: Devuelve una listado de todos los productos que tienen un precio mayor o igual al precio medio de
todos los productos de su mismo fabricante.
SELECT *
FROM producto INNER JOIN (
SELECT codigo_fabricante, AVG(precio) AS media
FROM producto
GROUP BY codigo_fabricante) AS t
ON producto.codigo_fabricante = t.codigo_fabricante
WHERE producto.precio >= t.media;
1.5 Subconsultas en la cláusula SELECT
Las subconsultas que pueden aparecer en la cláusula SELECT tienen que ser subconsultas de tipo escalar, que
devuelven una única fila y columna.
José Juan Sánchez Hernández 3
Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019
Imagen: Imagen extraída del libro «SQL Queries for Mere Mortals» de John L. Viescas.
José Juan Sánchez Hernández 4
Capítulo 2
Operadores que podemos usar en las
subconsultas
Los operadores que podemos usar en las subconsultas son los siguientes:
• Operadores básicos de comparación (>,>=, <, <=, !=, <>, =).
• Predicados ALL y ANY.
• Predicado IN y NOT IN.
• Predicado EXISTS y NOT EXISTS.
2.1 Operadores básicos de comparación
Los operadores básicos de comparación (>,>=, <, <=, !=, <>, =) se pueden usar cuando queremos comparar una
expresión con el valor que devuelve una subconsulta.
Losoperadoresbásicosdecomparaciónlosvamosautilizarpararealizarcomparacionesconsubconsultasque
devuelven un único valor, es decir, una columna y una fila.
Ejemplo: Devuelve todos los productos de la base de datos que tienen un precio mayor o igual al producto más
caro del fabricante Asus.
SELECT *
FROM producto
WHERE precio >= (SELECT MAX(precio)
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
WHERE fabricante.nombre = 'Asus');
La consulta anterior también se puede escribir con subconsultas sin hacer uso de INNER JOIN.
5
Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019
SELECT *
FROM producto
WHERE precio = (
SELECT MAX(precio)
FROM producto
WHERE codigo_fabricante = (
SELECT codigo
FROM fabricante
WHERE nombre = 'Asus'));
2.2 Subconsultas con ALL y ANY
ALL y ANY se utilizan con los operadores de comparación (>,>=, <, <=, !=, <>, =) y nos permiten comparar una
expresión con el conjunto de valores que devuelve una subconsulta.
ALL y ANY los vamos a utilizar para realizar comparaciones con subconsultas que pueden devolver varios
valores, es decir, una columna y varias filas.
Ejemplo: Podemos escribir la consulta que devuelve todos los productos de la base de datos que tienen un
precio mayor o igual al producto más caro del fabricante Asus, haciendo uso de ALL. Por lo tanto estas dos
consultas darían el mismo resultado.
SELECT *
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
WHERE precio >= (SELECT MAX(precio)
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
WHERE fabricante.nombre = 'Asus');
SELECT *
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
WHERE precio >= ALL (SELECT precio
FROM fabricante INNER JOIN producto
ON fabricante.codigo = producto.codigo_fabricante
WHERE fabricante.nombre = 'Asus');
La palabra reservada SOME es un alias de ANY. Por lo tanto, las siguientes consultas devolverían el mismo resul-
tado:
José Juan Sánchez Hernández 6
Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019
SELECT s1 FROM t1 WHERE s1 <> ANY (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 <> SOME (SELECT s1 FROM t2);
2.3 Subconsultas con IN y NOT IN
IN y NOT IN nos permiten comprobar si un valor está o no incluido en un conjunto de valores, que puede ser
el conjunto de valores que devuelve una subconsulta.
IN y NOT IN los vamos a utilizar para realizar comparaciones con subconsultas que pueden devolver varios
valores, es decir, una columna y varias filas.
Ejemplo: Devuelve un listado de los clientes que no han realizado ningún pedido.
SELECT *
FROM cliente
WHERE id NOT IN (SELECT id_cliente FROM pedido);
Cuandoestamostrabajandoconsubconsultas,IN y= ANY realizanlamismafunción.Porlotanto,lassiguientes
consultas devolverían el mismo resultado:
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
Ocurre lo mismo con NOT IN y <> ALL. Por lo tanto, las siguientes consultas devolverían el mismo resultado:
SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2);
Importante:
Tenga en cuenta que cuando hay un valor NULL en el resultado de la consulta interna, la consulta externa no
devuelve ningún valor.
Ejemplo: Devuelve un listado con el nombre de los departamentos que no tienen empleados asociados.
SELECT nombre
FROM departamento
WHERE codigo NOT IN (
SELECT codigo_departamento
José Juan Sánchez Hernández 7
Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019
FROM empleado);
La consulta interna SELECT codigo_departamento FROM empleado, devuelve algunas filas con valores
NULL y por lo tanto la consulta externa no devuelve ningún valor.
La forma de solucionarlo sería quitando los valores NULL de la consulta interna:
SELECT nombre
FROM departamento
WHERE codigo NOT IN (
SELECT codigo_departamento
FROM empleado
WHERE codigo_departamento IS NOT NULL);
2.4 Subconsultas con EXISTS y NOT EXISTS
Ejemplo: Devuelve un listado de los clientes que no han realizado ningún pedido.
SELECT *
FROM cliente
WHERE NOT EXISTS (SELECT id_cliente FROM pedido WHERE cliente.id = pedido.
id_cliente);
José Juan Sánchez Hernández 8
Capítulo 3
Errores comunes
3.1 Número incorrecto de filas en la subconsulta
ERROR 1242 (ER_SUBSELECT_NO_1_ROW)
SQLSTATE = 21000
Message = ”Subquery returns more than 1 row”
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
La consulta anterior sólo se podrá ejecutar cuando la consulta interna SELECT column1 FROM t2 devuelva
una única fila.
9
Capítulo 4
Referencias
• SQL: The Complete Reference de James R. Groff y otros.
• SQL Queries for Mere Mortal de John L. Viescas.
• Subquery Syntax. Documentación oficial de MySQL.
• Optimizing Subqueries. Documentación oficial de MySQL.
10
Capítulo 5
Licencia
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Inter-
nacional.
11

Más contenido relacionado

La actualidad más candente

Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
Anthonys Ordoñez
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
Universidad Nacional de Frontera
 
MySQL JOINS
MySQL JOINSMySQL JOINS
SQL(DDL & DML)
SQL(DDL & DML)SQL(DDL & DML)
SQL(DDL & DML)
Sharad Dubey
 
Mysql Crud, Php Mysql, php, sql
Mysql Crud, Php Mysql, php, sqlMysql Crud, Php Mysql, php, sql
Mysql Crud, Php Mysql, php, sql
Aimal Miakhel
 
Bitácora de base de datos
Bitácora de base de datosBitácora de base de datos
Bitácora de base de datos
Lalo Osorio
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
Marcelo Herrera
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
Pipe Muñoz
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
landeta_p
 
Unidad 2: Clases y objetos Ejercicio 3
Unidad 2: Clases y objetos Ejercicio 3Unidad 2: Clases y objetos Ejercicio 3
Unidad 2: Clases y objetos Ejercicio 3
Fabiola Valerio Ramirez
 
SQL - DML and DDL Commands
SQL - DML and DDL CommandsSQL - DML and DDL Commands
SQL - DML and DDL Commands
Shrija Madhu
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
eccutpl
 
Ddl &amp; dml commands
Ddl &amp; dml commandsDdl &amp; dml commands
Ddl &amp; dml commands
AnjaliJain167
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
Cristian Salazar C.
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
DorvinEduardo
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
Brihany Rossell
 
metodología crystal clear
 metodología crystal clear metodología crystal clear
metodología crystal clear
Jason José Martínez García
 
Gestion de riesgo software
Gestion de riesgo softwareGestion de riesgo software
Gestion de riesgo software
Hector L
 
Dokumen.site ejercicios resueltos-sqlpdf
Dokumen.site ejercicios resueltos-sqlpdfDokumen.site ejercicios resueltos-sqlpdf
Dokumen.site ejercicios resueltos-sqlpdf
Arlin11
 
Bases de datos NoSQL en entornos Big Data
Bases de datos NoSQL en entornos Big DataBases de datos NoSQL en entornos Big Data
Bases de datos NoSQL en entornos Big Data
Emilio Rodríguez García
 

La actualidad más candente (20)

Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
 
MySQL JOINS
MySQL JOINSMySQL JOINS
MySQL JOINS
 
SQL(DDL & DML)
SQL(DDL & DML)SQL(DDL & DML)
SQL(DDL & DML)
 
Mysql Crud, Php Mysql, php, sql
Mysql Crud, Php Mysql, php, sqlMysql Crud, Php Mysql, php, sql
Mysql Crud, Php Mysql, php, sql
 
Bitácora de base de datos
Bitácora de base de datosBitácora de base de datos
Bitácora de base de datos
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Unidad 2: Clases y objetos Ejercicio 3
Unidad 2: Clases y objetos Ejercicio 3Unidad 2: Clases y objetos Ejercicio 3
Unidad 2: Clases y objetos Ejercicio 3
 
SQL - DML and DDL Commands
SQL - DML and DDL CommandsSQL - DML and DDL Commands
SQL - DML and DDL Commands
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
 
Ddl &amp; dml commands
Ddl &amp; dml commandsDdl &amp; dml commands
Ddl &amp; dml commands
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
metodología crystal clear
 metodología crystal clear metodología crystal clear
metodología crystal clear
 
Gestion de riesgo software
Gestion de riesgo softwareGestion de riesgo software
Gestion de riesgo software
 
Dokumen.site ejercicios resueltos-sqlpdf
Dokumen.site ejercicios resueltos-sqlpdfDokumen.site ejercicios resueltos-sqlpdf
Dokumen.site ejercicios resueltos-sqlpdf
 
Bases de datos NoSQL en entornos Big Data
Bases de datos NoSQL en entornos Big DataBases de datos NoSQL en entornos Big Data
Bases de datos NoSQL en entornos Big Data
 

Similar a Guía 06. Subconsultas con MySQL - José J Sánchez H

Guía 05. Consultas resumen con MySQL - José J Sánchez H
Guía 05. Consultas resumen con MySQL - José J Sánchez HGuía 05. Consultas resumen con MySQL - José J Sánchez H
Guía 05. Consultas resumen con MySQL - José J Sánchez H
José Ricardo Tillero Giménez
 
bd2-teorico02.pdf
bd2-teorico02.pdfbd2-teorico02.pdf
bd2-teorico02.pdf
srmv59
 
Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
Juan Martinez Cataldi
 
Sentencia select
Sentencia selectSentencia select
Sentencia select
AnthonyLeonRuiz
 
Consultas anidadas o subconsultas oracle
Consultas  anidadas o subconsultas oracleConsultas  anidadas o subconsultas oracle
Consultas anidadas o subconsultas oracle
Miguel Ángel Fuentes García
 
FUNCIONES BASICAS DEL ENTORNO DE EXCEL
FUNCIONES BASICAS DEL ENTORNO DE EXCELFUNCIONES BASICAS DEL ENTORNO DE EXCEL
FUNCIONES BASICAS DEL ENTORNO DE EXCEL
johitafresh
 
Excel novenos.pptx
Excel novenos.pptxExcel novenos.pptx
Comercial
ComercialComercial
Comercial
Cesar Ñaupari
 
Grupo1 tics-2 (2)
Grupo1 tics-2 (2)Grupo1 tics-2 (2)
Grupo1 tics-2 (2)
Jhonny Snt
 
Sql2
Sql2Sql2
Practica5
Practica5Practica5
Practica5
Ararage Kun
 
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez HGuía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
José Ricardo Tillero Giménez
 
Manual
ManualManual
Taller indices 01
Taller indices 01Taller indices 01
Taller indices 01
AgenteAlbo
 
Access Clase 02
Access Clase 02Access Clase 02
Plantilla con-normas-icontec (1)
Plantilla con-normas-icontec (1)Plantilla con-normas-icontec (1)
Plantilla con-normas-icontec (1)
andres-valle6
 
Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...
Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...
Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...
José Ricardo Tillero Giménez
 
Consultas de Acción y expresiones Access 2010
Consultas de Acción y expresiones Access 2010Consultas de Acción y expresiones Access 2010
Consultas de Acción y expresiones Access 2010
mybloggerunitec
 
Fórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicación
Fórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicaciónFórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicación
Fórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicación
Andrea Quintero
 
Consultas en SQL
Consultas en SQLConsultas en SQL
Consultas en SQL
Renatta Rodriguez
 

Similar a Guía 06. Subconsultas con MySQL - José J Sánchez H (20)

Guía 05. Consultas resumen con MySQL - José J Sánchez H
Guía 05. Consultas resumen con MySQL - José J Sánchez HGuía 05. Consultas resumen con MySQL - José J Sánchez H
Guía 05. Consultas resumen con MySQL - José J Sánchez H
 
bd2-teorico02.pdf
bd2-teorico02.pdfbd2-teorico02.pdf
bd2-teorico02.pdf
 
Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
 
Sentencia select
Sentencia selectSentencia select
Sentencia select
 
Consultas anidadas o subconsultas oracle
Consultas  anidadas o subconsultas oracleConsultas  anidadas o subconsultas oracle
Consultas anidadas o subconsultas oracle
 
FUNCIONES BASICAS DEL ENTORNO DE EXCEL
FUNCIONES BASICAS DEL ENTORNO DE EXCELFUNCIONES BASICAS DEL ENTORNO DE EXCEL
FUNCIONES BASICAS DEL ENTORNO DE EXCEL
 
Excel novenos.pptx
Excel novenos.pptxExcel novenos.pptx
Excel novenos.pptx
 
Comercial
ComercialComercial
Comercial
 
Grupo1 tics-2 (2)
Grupo1 tics-2 (2)Grupo1 tics-2 (2)
Grupo1 tics-2 (2)
 
Sql2
Sql2Sql2
Sql2
 
Practica5
Practica5Practica5
Practica5
 
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez HGuía 02. Consultas MySQL sobre una tabla - José J Sánchez H
Guía 02. Consultas MySQL sobre una tabla - José J Sánchez H
 
Manual
ManualManual
Manual
 
Taller indices 01
Taller indices 01Taller indices 01
Taller indices 01
 
Access Clase 02
Access Clase 02Access Clase 02
Access Clase 02
 
Plantilla con-normas-icontec (1)
Plantilla con-normas-icontec (1)Plantilla con-normas-icontec (1)
Plantilla con-normas-icontec (1)
 
Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...
Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...
Guía 03. Consultas MySQL sobre varias tablas. Composición interna - José J Sá...
 
Consultas de Acción y expresiones Access 2010
Consultas de Acción y expresiones Access 2010Consultas de Acción y expresiones Access 2010
Consultas de Acción y expresiones Access 2010
 
Fórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicación
Fórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicaciónFórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicación
Fórmulas y funciones básicas descripción, sintaxis y ejercicios de aplicación
 
Consultas en SQL
Consultas en SQLConsultas en SQL
Consultas en SQL
 

Más de José Ricardo Tillero Giménez

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
José Ricardo Tillero Giménez
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
José Ricardo Tillero Giménez
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
José Ricardo Tillero Giménez
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
José Ricardo Tillero Giménez
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
José Ricardo Tillero Giménez
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
José Ricardo Tillero Giménez
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
José Ricardo Tillero Giménez
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
José Ricardo Tillero Giménez
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
José Ricardo Tillero Giménez
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
José Ricardo Tillero Giménez
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
José Ricardo Tillero Giménez
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
José Ricardo Tillero Giménez
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
José Ricardo Tillero Giménez
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
José Ricardo Tillero Giménez
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
José Ricardo Tillero Giménez
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
José Ricardo Tillero Giménez
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
José Ricardo Tillero Giménez
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
José Ricardo Tillero Giménez
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
José Ricardo Tillero Giménez
 

Más de José Ricardo Tillero Giménez (20)

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Clase 6 VLAN
 
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
 

Último

DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdfDESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
JonathanCovena1
 
Escuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdfEscuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdf
Alejandrino Halire Ccahuana
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
ViriEsteva
 
Inteligencia Artificial y Aprendizaje Activo FLACSO Ccesa007.pdf
Inteligencia Artificial  y Aprendizaje Activo FLACSO  Ccesa007.pdfInteligencia Artificial  y Aprendizaje Activo FLACSO  Ccesa007.pdf
Inteligencia Artificial y Aprendizaje Activo FLACSO Ccesa007.pdf
Demetrio Ccesa Rayme
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
Sandra Mariela Ballón Aguedo
 
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
Fernández Gorka
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
AlexDeLonghi
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
EricaCouly1
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Juan Martín Martín
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
RicardoValdiviaVega
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
saradocente
 
Business Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business TechBusiness Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business Tech
johnyamg20
 
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdfAPUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
VeronicaCabrera50
 
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
ginnazamudio
 
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
100078171
 
Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......
LuanaJaime1
 
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docxLecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Alejandrino Halire Ccahuana
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
LudmilaOrtega3
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
karlafreire0608
 

Último (20)

DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdfDESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
 
Escuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdfEscuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdf
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
 
Inteligencia Artificial y Aprendizaje Activo FLACSO Ccesa007.pdf
Inteligencia Artificial  y Aprendizaje Activo FLACSO  Ccesa007.pdfInteligencia Artificial  y Aprendizaje Activo FLACSO  Ccesa007.pdf
Inteligencia Artificial y Aprendizaje Activo FLACSO Ccesa007.pdf
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
 
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
 
Business Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business TechBusiness Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business Tech
 
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdfAPUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
 
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
 
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
 
Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......
 
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docxLecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
Lecciones 10 Esc. Sabática. El espiritismo desenmascarado docx
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
 

Guía 06. Subconsultas con MySQL - José J Sánchez H

  • 1. Unidad Didáctica 9. Subconsultas JOSÉ JUAN SÁNCHEZ HERNÁNDEZ IES Celia Viñas (Almería) - 2018/2019
  • 2. Índice general 1 Subconsultas 2 1.1 Tipos de subconsultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Subconsultas en la cláusula WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Subconsultas en la cláusula HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Subconsultas en la cláusula FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 Subconsultas en la cláusula SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Operadores que podemos usar en las subconsultas 5 2.1 Operadores básicos de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Subconsultas con ALL y ANY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Subconsultas con IN y NOT IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Subconsultas con EXISTS y NOT EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Errores comunes 9 3.1 Número incorrecto de filas en la subconsulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 Referencias 10 5 Licencia 11 1
  • 3. Capítulo 1 Subconsultas Una subconsulta es una consulta anidada dentro de otra consulta. Debe tener en cuenta que no existe una única solución para resolver una contulta en SQL. En esta unidad vamos a estudiar cómo podemos resolver haciendo uso de subconsultas, algunas de las consultas que hemos resuelto en las unidades anteriores. 1.1 Tipos de subconsultas El estándar SQL define tres tipos de subconsultas: • Subconsultas de fila. Son aquellas que devuelven más de una columna pero una única fila. • Subconsultas de tabla. Son aquellas que devuelve una o varias columnas y cero o varias filas. • Subconsultas escalares. Son aquellas que devuelven una columna y una fila. 1.2 Subconsultas en la cláusula WHERE Por ejemplo, suponga que queremos conocer el nombre del producto que tiene el mayor precio. En este caso podríamos realizar una primera consulta para buscar cuál es el valor del precio máximo y otra segunda consulta para buscar el nombre del producto cuyo precio coincide con el valor del precio máximo. La consulta sería la siguiente: SELECT nombre FROM producto WHERE precio = (SELECT MAX(precio) FROM producto) En este caso sólo hay un nivel de anidamiento entre consultas pero pueden existir varios niveles de anidamien- to. 2
  • 4. Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019 1.3 Subconsultas en la cláusula HAVING Ejemplo: Devuelve un listado con todos los nombres de los fabricantes que tienen el mismo número de pro- ductos que el fabricante Asus. SELECT fabricante.nombre, COUNT(producto.codigo) FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante GROUP BY fabricante.codigo HAVING COUNT(producto.codigo) >= ( SELECT COUNT(producto.codigo) FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante WHERE fabricante.nombre = 'Asus'); 1.4 Subconsultas en la cláusula FROM Ejemplo: Devuelve una listado de todos los productos que tienen un precio mayor o igual al precio medio de todos los productos de su mismo fabricante. SELECT * FROM producto INNER JOIN ( SELECT codigo_fabricante, AVG(precio) AS media FROM producto GROUP BY codigo_fabricante) AS t ON producto.codigo_fabricante = t.codigo_fabricante WHERE producto.precio >= t.media; 1.5 Subconsultas en la cláusula SELECT Las subconsultas que pueden aparecer en la cláusula SELECT tienen que ser subconsultas de tipo escalar, que devuelven una única fila y columna. José Juan Sánchez Hernández 3
  • 5. Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019 Imagen: Imagen extraída del libro «SQL Queries for Mere Mortals» de John L. Viescas. José Juan Sánchez Hernández 4
  • 6. Capítulo 2 Operadores que podemos usar en las subconsultas Los operadores que podemos usar en las subconsultas son los siguientes: • Operadores básicos de comparación (>,>=, <, <=, !=, <>, =). • Predicados ALL y ANY. • Predicado IN y NOT IN. • Predicado EXISTS y NOT EXISTS. 2.1 Operadores básicos de comparación Los operadores básicos de comparación (>,>=, <, <=, !=, <>, =) se pueden usar cuando queremos comparar una expresión con el valor que devuelve una subconsulta. Losoperadoresbásicosdecomparaciónlosvamosautilizarpararealizarcomparacionesconsubconsultasque devuelven un único valor, es decir, una columna y una fila. Ejemplo: Devuelve todos los productos de la base de datos que tienen un precio mayor o igual al producto más caro del fabricante Asus. SELECT * FROM producto WHERE precio >= (SELECT MAX(precio) FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante WHERE fabricante.nombre = 'Asus'); La consulta anterior también se puede escribir con subconsultas sin hacer uso de INNER JOIN. 5
  • 7. Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019 SELECT * FROM producto WHERE precio = ( SELECT MAX(precio) FROM producto WHERE codigo_fabricante = ( SELECT codigo FROM fabricante WHERE nombre = 'Asus')); 2.2 Subconsultas con ALL y ANY ALL y ANY se utilizan con los operadores de comparación (>,>=, <, <=, !=, <>, =) y nos permiten comparar una expresión con el conjunto de valores que devuelve una subconsulta. ALL y ANY los vamos a utilizar para realizar comparaciones con subconsultas que pueden devolver varios valores, es decir, una columna y varias filas. Ejemplo: Podemos escribir la consulta que devuelve todos los productos de la base de datos que tienen un precio mayor o igual al producto más caro del fabricante Asus, haciendo uso de ALL. Por lo tanto estas dos consultas darían el mismo resultado. SELECT * FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante WHERE precio >= (SELECT MAX(precio) FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante WHERE fabricante.nombre = 'Asus'); SELECT * FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante WHERE precio >= ALL (SELECT precio FROM fabricante INNER JOIN producto ON fabricante.codigo = producto.codigo_fabricante WHERE fabricante.nombre = 'Asus'); La palabra reservada SOME es un alias de ANY. Por lo tanto, las siguientes consultas devolverían el mismo resul- tado: José Juan Sánchez Hernández 6
  • 8. Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019 SELECT s1 FROM t1 WHERE s1 <> ANY (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 <> SOME (SELECT s1 FROM t2); 2.3 Subconsultas con IN y NOT IN IN y NOT IN nos permiten comprobar si un valor está o no incluido en un conjunto de valores, que puede ser el conjunto de valores que devuelve una subconsulta. IN y NOT IN los vamos a utilizar para realizar comparaciones con subconsultas que pueden devolver varios valores, es decir, una columna y varias filas. Ejemplo: Devuelve un listado de los clientes que no han realizado ningún pedido. SELECT * FROM cliente WHERE id NOT IN (SELECT id_cliente FROM pedido); Cuandoestamostrabajandoconsubconsultas,IN y= ANY realizanlamismafunción.Porlotanto,lassiguientes consultas devolverían el mismo resultado: SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2); Ocurre lo mismo con NOT IN y <> ALL. Por lo tanto, las siguientes consultas devolverían el mismo resultado: SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2); Importante: Tenga en cuenta que cuando hay un valor NULL en el resultado de la consulta interna, la consulta externa no devuelve ningún valor. Ejemplo: Devuelve un listado con el nombre de los departamentos que no tienen empleados asociados. SELECT nombre FROM departamento WHERE codigo NOT IN ( SELECT codigo_departamento José Juan Sánchez Hernández 7
  • 9. Unidad Didáctica 9. Subconsultas IES Celia Viñas (Almería) - 2018/2019 FROM empleado); La consulta interna SELECT codigo_departamento FROM empleado, devuelve algunas filas con valores NULL y por lo tanto la consulta externa no devuelve ningún valor. La forma de solucionarlo sería quitando los valores NULL de la consulta interna: SELECT nombre FROM departamento WHERE codigo NOT IN ( SELECT codigo_departamento FROM empleado WHERE codigo_departamento IS NOT NULL); 2.4 Subconsultas con EXISTS y NOT EXISTS Ejemplo: Devuelve un listado de los clientes que no han realizado ningún pedido. SELECT * FROM cliente WHERE NOT EXISTS (SELECT id_cliente FROM pedido WHERE cliente.id = pedido. id_cliente); José Juan Sánchez Hernández 8
  • 10. Capítulo 3 Errores comunes 3.1 Número incorrecto de filas en la subconsulta ERROR 1242 (ER_SUBSELECT_NO_1_ROW) SQLSTATE = 21000 Message = ”Subquery returns more than 1 row” SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); La consulta anterior sólo se podrá ejecutar cuando la consulta interna SELECT column1 FROM t2 devuelva una única fila. 9
  • 11. Capítulo 4 Referencias • SQL: The Complete Reference de James R. Groff y otros. • SQL Queries for Mere Mortal de John L. Viescas. • Subquery Syntax. Documentación oficial de MySQL. • Optimizing Subqueries. Documentación oficial de MySQL. 10
  • 12. Capítulo 5 Licencia Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Inter- nacional. 11