Consultas Avanzadas
Las subconsultas y vistas son herramientas poderosas que te permiten crear consultas mas complejas y reutilizables.
Subconsultas en WHERE
-- Productos cuyo precio esta por encima del promedio
SELECT * FROM productos
WHERE precio > (SELECT AVG(precio) FROM productos);
-- Clientes que han realizado mas de 5 pedidos
SELECT * FROM clientes
WHERE id IN (
SELECT cliente_id
FROM pedidos
GROUP BY cliente_id
HAVING COUNT(*) > 5
);
-- Productos nunca pedidos
SELECT * FROM productos
WHERE id NOT IN (
SELECT DISTINCT producto_id FROM pedido_items
);Subconsultas en FROM (Tablas Derivadas)
SELECT
categoria,
total_productos,
promedio_precio
FROM (
SELECT
c.nombre as categoria,
COUNT(p.id) as total_productos,
AVG(p.precio) as promedio_precio
FROM productos p
INNER JOIN categorias c ON p.categoria_id = c.id
GROUP BY c.id
) as resumen
WHERE total_productos > 10;Vistas: Consultas Guardadas
-- Crear una vista
CREATE VIEW vista_pedidos_clientes AS
SELECT
ped.id as pedido_id,
ped.fecha_pedido,
cli.nombre as cliente,
cli.email,
ped.total
FROM pedidos ped
INNER JOIN clientes cli ON ped.cliente_id = cli.id;
-- Usar la vista como tabla
SELECT * FROM vista_pedidos_clientes
WHERE fecha_pedido > 2025-01-01;Ventajas de las Vistas
- Simplifican consultas complejas
- Protegen datos sensibles (mostrar solo columnas necesarias)
- Permiten cambiar estructura sin modificar aplicaciones
- Se actualizan automaticamente