SQLite: Subconsultas

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.