Subconsulta SQL Ejemplos

Ejemplos de subconsultas SQL para que aprendas de forma práctica SQL.

En este artículo quiero ayudarte a ti, y a todo aquel que tiene dudas sobre el funcionamiento de las subconsultas con diversos ejemplos sencillos y muy gráficos que despejen dudas.

Ejemplo 1 Consulta anidada

El ejemplo que figura a continuación es un ejemplo típico de una subconsulta que devuelve un único resultado a la consulta principal.

SELECT *
FROM `tabla`
WHERE `columna` = (
    SELECT `valor`
    FROM `tabla2`
    LIMIT 1
  )

Este ejemplo muestra una consulta interna (la de la "tabla2") que devuelve un único valor. La consulta externa, en cambio, obtiene los resultados de "tabla" y filtra los resultados del valor devuelto por la consulta interna, igualando la "columna" indicada al resultado de la subconsulta.

Nota: es posible utilizar cualquier operador de igualdad como =, >, <, >=, <= o <>.

Ejemplo 2 Subconsulta SQL 

Una consulta anidada también puede devolver una columna entera, es decir, todos los valores de los distintos registros en esa columna. Por lo tanto, la consulta externa puede utilizar el comando IN para filtrar las filas que tienen uno de los valores devueltos por la subconsulta. El ejemplo que figura a continuación pone de relieve ese caso:

SELECT *
FROM tabla
WHERE `columna` IN (
    SELECT `columna`
    FROM  tabla2
    WHERE `clave_ajena` = 36
  )

Ejemplo completo de consultas anidadas

En el resto del artículo se presentan ejemplos concretos mediante subconsultas.

Imaginemos un sitio web que le permite hacer y responder preguntas. Tal sitio tiene una base de datos con una tabla para las preguntas y otra para las respuestas.

Tabla "pregunta" :

id fecha titulo contenido
1 2013-03-24 12:54:32 ¿Cómo se repara un ordeador Hola, tengo mi ordenador roto, ¿cómo puedo proceder a repararlo?
2 2013-03-26 19:27:41 ¿Cómo cambio un neumático? ¿Cuál es la mejor manera de cambiar un neumático fácilmente?
3 2013-04-18 20:09:56 ¿Qué hacer si se rompe un dispositivo? ¿Es mejor reparar los aparatos eléctricos o comprar otros nuevos?
4 2013-04-22 17:14:27 ¿Cómo hago para limpiar el teclado de un ordenador? Hola, hay mucho polvo bajo el teclado de mi ordenador, ¿cómo lo limpio? Gracias. Gracias.

Tabla "respuesta" :

id id_pregunta fecha contestacion
1 1 2013-03-27 07:44:32 Buenos días, señor. ¿Puedes explicar qué es lo que está mal en tu ordenador? Gracias. Gracias. Gracias.
2 1 2013-03-28 19:27:11 Buenas noches, la forma más simple es llamar a un profesional para que repare una computadora. Atentamente,
3 2 2013-05-09 22:10:09 En Internet se pueden encontrar consejos sobre este tema.
4 3 2013-05-24 09:47:12 Buenos días, señor. Depende de ti, de tu presupuesto y de tus preferencias ambientales. Atentamente,

Consulta anidada que devuelve un único resultado

Con tal aplicación, puede ser útil conocer la pregunta relacionada con la última respuesta añadida en la aplicación. Esto se puede hacer a través de la siguiente consulta SQL:

SELECT *
FROM `pregunta`
WHERE pregunta.id= (
    SELECT id_pregunta
    FROM `respuesta`
    ORDER BY respuesta.fecha DESC
    LIMIT 1
  )

Tal solicitud devolverá la siguiente línea:

id fecha titulo contenido
3 2013-04-18 20:09:56 ¿Qué hacer si se rompe un dispositivo? ¿Es mejor reparar los aparatos eléctricos o comprar otros nuevos?

Este resultado muestra que la pregunta relacionada con la última respuesta en el foro se encuentra bien de este resultado.

Consulta anidada que devuelve una columna

Ahora imaginemos que queremos obtener las preguntas relacionadas con todas las respuestas entre 2 fechas. Estas preguntas pueden ser recuperadas por la siguiente consulta SQL:

SELECT *
FROM `regunta
WHERE pregunta.id IN (
    SELECT id_pregunta
    FROM respuesta
    WHERE fecha BETWEEN '2020-01-01' AND '2020-12-31'
  )

En nuestro caso, esta consulta devolverá los siguientes resultados:

id fecha titulo contenido
1 2013-03-24 12:54:32 ¿Cómo se repara un ordeador Hola, tengo mi ordenador roto, ¿cómo puedo proceder a repararlo?
2 2013-03-26 19:27:41 ¿Cómo cambio un neumático? ¿Cuál es la mejor manera de cambiar un neumático fácilmente?
3 2013-04-18 20:09:56 ¿Qué hacer si se rompe un dispositivo? ¿Es mejor reparar los aparatos eléctricos o comprar otros nuevos?

Tal consulta permite recuperar las preguntas que han sido contestadas entre 2 fechas. Esto es práctico en nuestro caso para evitar obtener respuestas que no han tenido ninguna respuesta o que no han tenido nuevas respuestas durante mucho tiempo.

Conclusión de los ejemplos

Espero que te hayan sido de utilidad estos ejemplos sencillos, si te ha sido de utilidad no dudes en dejar un comentario y compartir el contenido para que siga haciendo artículos como este.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.