Qué es una subconsulta?
Cómo ya sabemos, las consultas se hacen con la instrucción SELECT. Por lo tanto, una subconsulta es un SELECT embebido o anidado dentro de otro SELECT.
Vamos a mirar el concepto con un ejemplo, y utilizando la forma de subconsultas más utilizada.
Supongamos la base de datos de una constructora. Los datos que hay en la tabla PROPIETARIO (de inmuebles) son los que se muestran en la imagen derecha. Para el caso del ejemplo que vamos a exponer, notemos que hay dos propietarios que tienen 21 años, y que son los propietarios más jóvenes. |
Vamos a consultar nombre y edad de los propietarios más jóvenes. Para los datos en cuestión, el resultado debería ser Julio García y Mariana Toro, con sus respectivos 21 años de edad. La primera forma de hacer la consulta es con la cláusula TOP, vista en el apartado anterior, y que se muestra en la imagen de la derecha. Como podemos ver, y ya se explicó en la cláusula TOP, hay una gran desventaja con esta solución. Si solo ponemos TOP 1 nos va a sacar a uno de los dos propietarios, no a los dos. Intencionalmente pusimos en la solución mostrada el TOP 2, pero es porque ya sabiamos que habian dos propietarios más jóvenes. |
Con la otra solución, que es utilizando el concepto de subconsulta, esta desventaja del TOP se elimina. La solución utilizando subconsulta se muestra en la imagen. Como se puede observar, tenemos un SELECT embebido en otro SELECT más externo. El SELECT interno es la subconsulta, y la intención es que se ejecute primero, para este caso, la subconsulta y que su resultado sea entregado al SELECT más externo, que es el que finalmente da el resultado. Nótese que lo que "dice" el WHERE es que debe seleccionar las tuplas de la tabla PROPIETARIO cuya edad sea igual a lo que resulte de la ejecución de la subconsulta, es decir, propietarios cuya edad es igual a la mínima edad de todos los propietarios, los más jóvenes. La gran ventaja de esta solución es que si existen 10 propietarios con 21 años, esta misma instrucción me muestra los datos de esos 10 propietarios, lo cual no sucedía con el TOP. |
Hay que advertir que existen, en general, tres tipos de subconsultas:
- Tener la subconsulta en el WHERE del SELECT más externo. Es el caso del ejemplo visto, y es el tipo de subconsulta más utilizado.
- Tener la subconsulta en el FROM del SELECT más externo.
- Tener la subconsulta en el SELECT más externo.
Los dos últimos tipos de subconsultas son más complejos y son de un curso de lenguaje SQL avanzado.
Video: