Subconsultas y consultas anidadas
Las subconsultas, también conocidas como consultas anidadas, son consultas SQL que se incorporan dentro de otras consultas. Estas subconsultas se pueden utilizar en diversas cláusulas como SELECT, FROM, WHERE, y HAVING. Aquí tienes algunos ejemplos de subconsultas:
Ejemplo 1: Subconsulta en la Cláusula WHERE
SELECT film_id, title
FROM film
WHERE category_id = (SELECT category_id FROM category WHERE name = 'Drama');
En este ejemplo, la subconsulta obtiene el category_id
para la categoría "Drama" y la consulta principal selecciona películas que pertenecen a esa categoría.
Ejemplo 2: Subconsulta Correlativa en la Cláusula SELECT
SELECT first_name, last_name, (SELECT COUNT(*) FROM rental WHERE customer_id = c.customer_id) AS rental_count
FROM customer c;
Esta subconsulta correlativa cuenta el número de alquileres para cada cliente en la consulta principal.
Ejemplo 3: Subconsulta en la Cláusula FROM
SELECT AVG(subquery.rental_count) AS avg_rentals
FROM (SELECT customer_id, COUNT(*) AS rental_count FROM rental GROUP BY customer_id) AS subquery;
En este ejemplo, la subconsulta genera una tabla temporal que contiene el recuento de alquileres por cliente, y la consulta principal calcula el promedio de esos recuentos.
Ejemplo 4: Subconsulta Escalar en la Cláusula HAVING
SELECT customer_id, COUNT(*) AS rental_count
FROM rental
GROUP BY customer_id
HAVING COUNT(*) > (SELECT AVG(rental_count) FROM (SELECT customer_id, COUNT(*) AS rental_count FROM rental GROUP BY customer_id) AS subquery);
En este caso, la subconsulta compara el recuento de alquileres de cada cliente con el promedio general.
Estos son solo ejemplos básicos, y las subconsultas pueden ser más complejas según tus necesidades. Asegúrate de entender la estructura y el propósito de cada subconsulta al utilizarlas en tus consultas SQL.