Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
SQLite: Subconsultas
Este tutorial de SQLite explica cómo usar subconsulta En SQLite, con sintaxis y ejemplos.
¿Qué es una subconsulta en SQLite?
En SQLite, una subconsulta es una consulta dentro de una consulta. Puede crear subconsultas en sentencias SQL. Estas subconsultas pueden residir en la cláusula WHERE, la cláusula FROM o la cláusula SELECT.
notas
- En SQLite, las subconsultas también se denominan CONSULTA INTERNA o SELECCIÓN INTERNA.
- En SQLite, una consulta principal que contiene una subconsulta también se denomina CONSULTA EXTERNA o SELECCIÓN EXTERNA.
Dónde cláusula
En la mayoría de los casos, las subconsultas se encuentran en la cláusula WHERE. Estas subconsultas también se denominan subconsultas anidadas.
Por ejemplo:
SELECT e.employee_id, e.last_name FROM employees e WHERE e.department_id IN (SELECT d.department_id FROM departments d WHERE d.department_name="HR" OR d.department_name="Accounting");
La parte de la subconsulta de la instrucción SELECT anterior es:
(SELECT d.department_id FROM departments d WHERE d.department_name="HR" OR d.department_name="Accounting");
Esta subconsulta le permite encontrar todos los valores de ID de departamento de la tabla de departamentos donde el nombre del departamento es “HR” o “Contabilidad”. La subconsulta luego se usa para filtrar los resultados de la consulta principal usando una condición IN.
Esta subconsulta también se puede escribir como una unión INTERNA de la siguiente manera:
SELECT e.employee_id, e.last_name FROM employees e INNER JOIN departments d ON e.department_id = d.department_id WHERE d.department_name="HR" OR d.department_name="Accounting";
Este INNER JOIN se ejecutará de manera más eficiente que la subconsulta original. Sin embargo, es importante tener en cuenta que no todas las subconsultas se pueden reescribir mediante combinaciones.
Cláusula DESDE
Las subconsultas también se pueden encontrar en la cláusula FROM. Estas se denominan vistas en línea.
Por ejemplo:
SELECT departments.department_name, subquery1.latest_hire FROM departments, (SELECT department_id, MAX(hire_date) AS latest_hire FROM employees GROUP BY department_id) subquery1 WHERE subquery1.department_id = departments.department_id;
En este ejemplo, creamos una subconsulta en la cláusula FROM de la siguiente manera:
(SELECT department_id, MAX(hire_date) AS latest_hire FROM employees GROUP BY department_id) subquery1
La subconsulta tiene un alias como subconsulta1. Este será el nombre utilizado para referirse a esta subconsulta o cualquiera de sus campos.
cláusula de elección
Las subconsultas también se pueden encontrar en la cláusula SELECT. Por lo general, se usan cuando desea recuperar cálculos mediante funciones de agregado, como las funciones de suma, conteo, mínimo, máximo o promedio, pero no desea que la función de agregado se aplique a la consulta principal.
Por ejemplo:
SELECT e1.department_id, (SELECT MAX(hire_date) FROM employees e2 WHERE e1.department_id = e2.department_id) subquery2 FROM employees e1;
En este ejemplo, creamos una subconsulta en la cláusula SELECT de la siguiente manera:
(SELECT MAX(hire_date) FROM employees e2 WHERE e1.department_id = e2.department_id) subquery2
La subconsulta tiene un alias como subconsulta2. Este será el nombre utilizado para referirse a esta subconsulta o cualquiera de sus campos.
El truco para colocar una subconsulta en la cláusula SELECT es que la subconsulta debe devolver un solo valor. Esta es la razón por la cual las funciones agregadas como las funciones de suma, conteo, mínimo, máximo o promedio se usan a menudo en las subconsultas.