
Imagina que estás buscando el precio más alto de un producto, pero solo dentro de una categoría específica. Eso es lo que hace una consulta SELECT dentro de otra SELECT, también conocida como subconsulta.
Visualizando el Proceso
Piensa en esto como dos lupas. La lupa grande (la consulta SELECT externa) te da una vista general de la base de datos. La lupa pequeña (la subconsulta SELECT interna) se enfoca en un detalle específico que necesitas para la lupa grande.
Primero, la lupa pequeña encuentra el detalle. Luego, la lupa grande usa esa información para darte el resultado final.
Must Read
Ejemplo Práctico: Libros y Categorías
Tenemos una tabla llamada Libros con columnas como Titulo, Categoria y Precio. Queremos encontrar el libro más caro de la categoría "Fantasía".
Primero, la subconsulta encontrará el precio máximo de los libros de "Fantasía". Segundo, la consulta externa buscará en toda la tabla Libros y devolverá la información del libro cuyo precio coincida con el máximo encontrado por la subconsulta.

Así se vería el código:
SELECT Titulo, Precio
FROM Libros
WHERE Precio = (SELECT MAX(Precio) FROM Libros WHERE Categoria = 'Fantasía');
Aquí, el SELECT interno `SELECT MAX(Precio) FROM Libros WHERE Categoria = 'Fantasía'` es la lupa pequeña. Devuelve un único valor: el precio más alto de los libros de fantasía. El SELECT externo usa ese valor en la cláusula WHERE para encontrar el libro correspondiente.
Comparándolo con una Búsqueda Manual
Imagina buscar el estudiante más alto de una clase. Podrías medir a cada estudiante (la consulta completa). O podrías hacer esto: primero, encontrar la altura más alta en la clase (la subconsulta) y luego buscar al estudiante con esa altura (la consulta externa).

Otro Ejemplo: Empleados y Departamentos
Tienes una tabla Empleados con información sobre cada empleado, incluyendo su Salario y Departamento. También tienes una tabla Departamentos con el nombre de cada departamento y su ID.
Quieres encontrar los empleados que ganan más que el promedio salarial de su propio departamento.

SELECT Nombre, Salario, Departamento
FROM Empleados e
WHERE Salario > (SELECT AVG(Salario) FROM Empleados WHERE Departamento = e.Departamento);
Observa el `e.Departamento` en la subconsulta. Se refiere al departamento del empleado actual en la consulta externa. Es como decir: "Para cada empleado, compara su salario con el promedio de su propio departamento".
Tipos de Subconsultas
Existen diferentes tipos de subconsultas, dependiendo de cómo se usen. Algunas subconsultas devuelven un único valor (como en los ejemplos anteriores). Otras pueden devolver una lista de valores.
Por ejemplo, podríamos usar la palabra clave IN para verificar si el valor de una columna está presente en una lista devuelta por la subconsulta.

Consideraciones Importantes
Las subconsultas pueden hacer que tu código sea más legible y conciso. Sin embargo, también pueden afectar el rendimiento si no se usan con cuidado.
Es importante asegurarte de que la subconsulta devuelva el tipo de dato correcto que espera la consulta externa. De lo contrario, podrías obtener errores inesperados.
Recuerda practicar con diferentes ejemplos para comprender completamente cómo funcionan las subconsultas. ¡La práctica hace al maestro!