¿Cuáles son las subconsultas correlacionadas?
Los programadores y administradores de bases de datos utilizan el lenguaje de consulta estructurado para crear bases de datos informáticas y reportar sobre la información contenida en ellas. Una sentencia SQL puede contener pruebas condicionales complejas para seleccionar conjuntos específicos de datos de las tablas en una base de datos. Una subconsulta correlacionada tiene dos pruebas, una anidada dentro de la otra; cada prueba depende del resultado de la otra.
SQL
Las bases de datos relacionales más modernas incorporan SQL para agregar y actualizar datos, crear estructuras y la recolección de información. SQL se basa en las teorías acerca de los datos desarrollados en la década de 1970 y es perfeccionada continuamente desde entonces. Consiste en un conjunto de estados, incluyendo SELECT, INSERT, CREATE y DELETE, seguido de varias cláusulas que especifican los datos gestionados y opciones, tales como ordenar y agrupar. El uso generalizado de las bases de datos se debe a la flexibilidad y la sofisticación de SQL; permite a las organizaciones analizar grupos de datos complejos de muchas maneras.
Consultas y subconsultas
Un comando SQL para recuperar datos se denomina consulta. Por lo general, los programadores utilizan la instrucción SELECT de las consultas, aunque muchas de las reglas para la búsqueda de datos también se aplican a INSERT, DELETE y UPDATE. Una simple consulta SELECT puede mostrar el contenido de una tabla de datos, como por ejemplo la siguiente sentencia:
SELECT * FROM inventory;
Esta consulta muestra todos los registros en una tabla llamada "Inventory" Puedes obtener resultados de una consulta más específica mediante la adición de pruebas condicionales, como en esta declaración "inventario".:
SELECT * FROM inventory WHERE warehouse_code = ‘chicago5’;
Esta sentencia muestra tus registros de inventario de un código de depósito, chicago5.
Una subconsulta es una consulta dentro de otra consulta. La siguiente sentencia lista registros del inventario de aquellos artículos que los depósitos estén en una región determinada:
SELECT * FROM inventory WHERE warehouse_code IN (SELECT warehouse_code FROM warehouses WHERE region = ‘midwest’);
Ten en cuenta que esta consulta tiene dos instrucciones SELECT, una que muestra los registros de inventario y otra que establece la consulta principal con los códigos del depósito.
Subconsulta correlacionada
En una subconsulta correlacionada, las consultas principales y subordinadas extraen datos de la misma tabla. La consulta interna realiza una función de agregado, tal como una estadística y alimenta esta información a la consulta externa, que la utiliza como la base de una comparación. Por ejemplo, esta subconsulta correlacionada produce una lista de registros de inventario para los artículos con precios superior al promedio de un depósito. La consulta externa pasa la información del depósito a la consulta interna y la consulta interna envía el precio medio de nuevo a la consulta externa:
SELECT part_number, price, warehouse_code FROM inventory i1 WHERE price > (SELECT AVG(price) FROM inventory i2 WHERE warehouse_code.i1 = warehouse_code.i2);
Las dos consultas usan tablas alias "I1" y "I2". A pesar de que se refieren a la misma tabla, el uso del alias permite a las consultas tratarse como dos entidades separadas.
Inconvenientes de funcionamiento
Para las subconsultas correlacionadas, SQL evalúa la consulta interna una vez para cada registro en la consulta externa. Cuando los tamaños de las tablas se hacen más grandes, el proceso lleva más tiempo. Si encuentras que una subconsulta correlacionada toma una cantidad excesiva de tiempo para completarse, considera el uso de una alternativa, como la carga de una tabla temporal con resultados intermedios y luego procesa la tabla temporal directamente contra la tabla principal con una simple subconsulta. Aunque menos elegante, puede resultar mucho más rápido.