Está en la página 1de 4

1.3 SubConsultas.

Las subconsultas son aquellas consultas que se escriben en la cláusula WHERE o HAVING de otra
consulta, en otras palabras, sería anidar consultas. Una Subconsulta también podría ser anidada en
una instrucción SELECT, INSERT, UPDATE o DELETE, o en otra Subconsulta, esto dependerá de lo que
necesite hacer.

El sistema gestor de base de datos primero resuelve la consulta más interna y ese valor lo utiliza para
resolver la consulta más externa.

Las subconsultas pueden anidarse unas dentro de otras tanto como sea necesario, cada SGBD (Sistema
Gestor de Base de Datos) puede tener un nivel máximo de anidamiento, que difícilmente se alcanzará.

No olvide la estructura de una consulta, esa misma estructura debe tener cada subconsulta.

Hay tres tipos básicos de Subconsultas, que son las siguientes:

 Las que operan en listas especificadas con IN o modificadas por un operador de comparación
mediante ANY o ALL.
 Las que se especifican con un operador de comparación sin modificar y deben devolver un
solo valor.
 Las que son pruebas de existencia especificadas con EXISTS.

Las instrucciones que incluyen una Subconsulta normalmente tienen uno de estos formatos:

 WHERE expression [NOT] IN (subquery)


 WHERE expression comparison_operator [ANY | ALL] (subquery)
 WHERE [NOT] EXISTS (subquery)

Veamos algunos ejemplos:

Para los siguientes ejemplos será necesario que en su Sql Server haya adjuntado la base de datos
Northwind. En los recursos podrá descargar una guía y los archivos para adjuntar esta base de datos.

Primero asegúrese de tener la base de datos Northwind, debe presionar en la opción Nueva consulta
(2) para que se le habilite el área de trabajo.
 MUESTRE EL NOMBRE Y EL PRECIO DE TODOS LOS PRODUCTOS CUYO PRECIO SEA MENOR
QUE EL PROMEDIO DE TODOS LOS PRECIOS DE LOS PRODUCTOS.

EXPLICACIÓN:
La consulta más interna (la que está subrayada) es la subconsulta, en esa consulta se extrae el
promedio de todos los precios de los productos, la función AVG permite extraer el promedio. La
subconsulta se ejecuta primero, cuando ese valor ya fue encontrado la consulta más externa lo utiliza
para mostrar los nombres y los precios de los productos que cumplen la condición. Si usted desea
saber cual es el valor calculado como promedio puede ejecutar sólo la sintaxis de la consulta interna,
para ello sólo debe sombrearla y ejecutarla.

En la flecha de abajo usted puede ver cuantos resultados se encontraron.


 MUESTRE EL NOMBRE Y EL PRECIO DE TODOS LOS PRODUCTOS CUYO PRECIO SEA MENOR
QUE EL PRODUCTO MÁS CARO.

EXPLICACIÓN:
En la línea subrayada se muestra la subconsulta, se hace uso de la función MAX, la cual permite
obtener el valor mayor de la columna UnitPrice, es decir "Precio unitario". Cuando se tiene el valor
máximo, entonces mostrará los nombres y precios de productos que cumplen la condición.

 MOSTRAR LOS PRODUCTOS QUE SU PRECIO UNITARIO SEA MAYOR QUE 100 Y SI NO SE
ENCUENTRAN PRODUCTOS QUE CUMPLAN CON LA CONDICIÓN, ENTONCES MOSTRAR EL
MENSAJE "NO HAY PRODUCTOS CON ESE PRECIO".

EXPLICACIÓN:
Observe que en el código que da solución al requerimiento, se han tomado en cuenta dos consultas.
En la primera se realiza una condición con el IF para determinar si existen productos con precio
unitario mayor a 100 y si cumple la condición, entonces realiza la consulta que como resultado
mostrara los valores requeridos, para este caso muestra los productos que cumplen la condición de
ser el precio unitario mayor a 100.

 TRASLADAR LOS REGISTROS PRODUCTID, PRODUCTNAME, UNITPRICE DE LA TABLA


PRODUCTS A LA TABLA “MI_TABLA_PRODUCTOS”. LOS CAMPOS DE LAS TABLAS DEBEN TENER
IGUALES CARACTERÍSTICAS, ES DECIR, LOS CAMPOS DEBEN TENER LOS MISMOS TIPOS DE
DATOS Y LONGITUDES.
Para este ejercicio primero crearemos la tabla “MI_TABLA_PRODUCTOS" con los campos requeridos,
estos campos deben tener igual tipo de dato y longitud que los que tiene la tabla PRODUCTS.
Crearemos primero esa tabla porque en este momento no la tenemos.

Ahora que la tabla está creada ejecutaremos la subconsulta:

Puede verificar los cambios haciendo una consulta a todos los registros de la nueva tabla:

EXPLICACIÓN:

Utilizamos el INSERT para agregar los registros. A la tabla "MI_TABLA_PRODUCTOS" se le crearon tres
campos que tienen exactamente el mismo tipo de dato y longitud que los campos de la tabla
"PRODUCTS". en la primera línea hacemos uso del insert, en esos campos se insertarán los registros
resultantes de la segunda línea, es decir, el resultado del SELECT utilizado. Debemos ser cuidadosos
de hacer referencia a los mismos campos detallados en el INSERT.

 DE LA TABLA PRODUCTS, MOSTRAR LOS CAMPOS PRODUCTID, PRODUCTNAME, UNITPRICE Y


LUEGO UNA ÚLTIMA COLUMNA EN LA CUAL APARECERÁ EL VALOR PROMEDIO DE TODOS LOS
PRECIOS UNITARIOS. LA COLUMNA DEBE TENER EL TÍTULO DE "PROMEDIO".

EXPLICACIÓN:
En este caso la última columna, no es un campo de la tabla, es una columna que la está generando el
segundo SELECT utilizado. Para asignarle nombre (alias) a la columna utilizamos la instrucción AS.

También podría gustarte