PostgreSQL: 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.

PostgreSQL: subconsultas

Este tutorial de PostgreSQL explica cómo usar subconsulta Viene con sintaxis y ejemplos en PostgreSQL.

¿Qué es una subconsulta en PostgreSQL?

En PostgreSQL, 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 PostgreSQL, las subconsultas también se denominan CONSULTA INTERNA o SELECCIÓN INTERNA.
  • En PostgreSQL, 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 p.product_id, p.product_name
FROM products p
WHERE p.category_id IN
   (SELECT c.category_id
    FROM categories c
    WHERE c.category_id > 25
    AND c.category_name like 'S%');

La parte de la subconsulta de la instrucción SELECT anterior es:

(SELECT c.category_id
 FROM categories c
 WHERE c.category_id > 25
 AND c.category_name like 'S%');

Esta subconsulta le permite encontrar todos los valores de category_id de la tabla de categorías donde category_id es mayor que 25 y category_name comienza con “S”. 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 p.product_id, p.product_name
FROM products p
INNER JOIN categories c
ON p.category_id = c.category_id
WHERE c.category_id > 25
AND c.category_name like 'S%';

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 products.product_name, subquery1.category_name
FROM products,
 (SELECT categories.category_id, categories.category_name, COUNT(category_id) AS total
  FROM categories
  GROUP BY categories.category_id, categories.category_name) subquery1
WHERE subquery1.category_id = products.category_id;

En este ejemplo, creamos una subconsulta en la cláusula FROM de la siguiente manera:

(SELECT categories.category_id, categories.category_name, COUNT(category_id) AS total
 FROM categories
 GROUP BY categories.category_id, categories.category_name) 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 p1.product_name,
  (SELECT MAX(product_id)
   FROM products p2
   WHERE p1.product_id = p2.product_id) subquery2
FROM products p1;

En este ejemplo, creamos una subconsulta en la cláusula SELECT de la siguiente manera:

(SELECT MAX(product_id)
 FROM products p2
 WHERE p1.product_id = p2.product_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.

(Visited 28 times, 1 visits today)