Subconsultas en SQL

  Correcto

Las subconsultas son consultas anidadas dentro de otra consulta. Se utilizan para realizar operaciones más complejas y permiten recuperar datos que dependen de otros datos.

A continuación, se presentan ejemplos de cómo usar subconsultas en diferentes partes de una consulta SQL.

Ejemplo de Tablas

Para ilustrar mejor, trabajaremos con las siguientes tablas:

Tabla: usuarios

bash
| id  | nombre   |
|-----|----------|
| 1   | Juan     |
| 2   | María    |
| 3   | Pedro    |
| 4   | Ana      |

Tabla: pedidos

bash
| id  | usuario_id | producto      |
|-----|------------|---------------|
| 1   | 1          | Producto A    |
| 2   | 1          | Producto B    |
| 3   | 2          | Producto C    |
| 4   | 3          | Producto D    |

Subconsultas en el SELECT

Las subconsultas pueden usarse en la cláusula SELECT para calcular valores que dependen de otros datos.

sql
SELECT nombre, 
(SELECT COUNT(*) 
      FROM pedidos 
      WHERE usuario_id = usuarios.id) AS total_pedidos
FROM usuarios;

Resultado:

bash
| nombre | total_pedidos |
|--------|---------------|
| Juan   | 2             |
| María  | 1             |
| Pedro  | 1             |
| Ana    | 0             |

Subconsultas en el FROM

Las subconsultas también se pueden usar en la cláusula FROM para crear tablas temporales que pueden ser consultadas.

sql
SELECT usuario_id, COUNT(*) AS total_pedidos
FROM (SELECT * FROM pedidos WHERE producto = 'Producto A') AS pedidos_filtrados
GROUP BY usuario_id;

Resultado:

bash
| usuario_id | total_pedidos |
|------------|---------------|
| 1          | 1             |

Subconsultas en el WHERE

Las subconsultas son útiles en la cláusula WHERE para filtrar resultados basados en condiciones de otras tablas.

sql
SELECT * 
FROM usuarios 
WHERE id IN (SELECT usuario_id FROM pedidos WHERE producto = 'Producto A');

Resultado:

bash
| id  | nombre |
|-----|--------|
| 1   | Juan   |
  Advertencia

Las subconsultas son herramientas poderosas que permiten hacer consultas más complejas y obtener datos interrelacionados de manera efectiva.