-- create a table
CREATE TABLE Clientes (
cliente_id INT PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(50)
);
CREATE TABLE Productos (
producto_id INT PRIMARY KEY,
nombre_producto VARCHAR(50),
precio DECIMAL(10, 2)
);
CREATE TABLE Pedidos (
pedido_id INT PRIMARY KEY,
cliente_id INT,
producto_id INT,
cantidad INT,
fecha_pedido DATE,
FOREIGN KEY (cliente_id) REFERENCES Clientes(cliente_id),
FOREIGN KEY (producto_id) REFERENCES Productos(producto_id)
);
-- 2. INSERCIÓN DE DATOS DE PRUEBA
INSERT INTO Clientes VALUES
(1, 'Ana Gómez', 'ana@email.com'),
(2, 'Carlos López', 'carlos@email.com'),
(3, 'María Rodríguez', 'maria@email.com'),
(4,'Sophie Ritondo','sophie@gmail.com'),
(5,'Solange Lopez','solange@gmail.com'),
(6,'Olivier Ricardo','olivier@gmail.com'),
(7,'Nadine Sanchez','nadine@gmail.com'),
(8,'Suzanne Ferez','suzanne@gmail.com'),
(9,'Frank Sinatra','frank@gmail.com');
INSERT INTO Productos VALUES
(101, 'Laptop', 850.00),
(102, 'Ratón Óptico', 15.50),
(103, 'Teclado Mecánico', 45.00),
(104, 'Monitor 24 pulgadas', 160.00);
INSERT INTO Pedidos VALUES
(1, 1, 101, 1, '2026-09-10'),
(2, 1, 102, 2, '2026-09-12'),
(3, 2, 103, 1, '2026-09-15'),
(4,2,104,2,'2026-09-20');
-- 3. CONSULTAS SQL UTILIZANDO JOIN
-- EJEMPLO 1: INNER JOIN
-- Obtiene el detalle de las compras: qué cliente compró qué producto.
SELECT '--- EJEMPLO 1: INNER JOIN ---';
SELECT
Clientes.nombre AS Cliente,
Productos.nombre_producto AS Producto,
Pedidos.cantidad AS Cantidad,
Pedidos.fecha_pedido AS Fecha
FROM Pedidos
INNER JOIN Clientes ON Pedidos.cliente_id = Clientes.cliente_id
INNER JOIN Productos ON Pedidos.producto_id = Productos.producto_id;
-- EJEMPLO 2: LEFT JOIN
-- Muestra TODOS los clientes y sus compras (si no han comprado nada, aparece NULL)
SELECT '--- EJEMPLO 1: LEFT JOIN ---';
SELECT
Clientes.nombre AS Cliente,
Pedidos.pedido_id AS Numero_Pedido,
Pedidos.fecha_pedido AS Fecha
FROM Clientes
LEFT JOIN Pedidos ON Clientes.cliente_id = Pedidos.cliente_id;
-- EJEMPLO 3: RIGHT JOIN / LEFT JOIN INVERSO (Compatible con todos los motores)
-- Muestra TODOS los productos, incluso los que nunca se han vendido (como el Monitor)
SELECT '--- EJEMPLO 1: RIGHT JOIN ---';
SELECT
Productos.nombre_producto AS Producto,
Productos.precio AS Precio,
Pedidos.cantidad AS Cantidad_Vendida
FROM Productos
LEFT JOIN Pedidos ON Productos.producto_id = Pedidos.producto_id;
--Ejemplo 4 CONSULTA CON CÁLCULO Y AGRUPACIÓN
SELECT
Clientes.nombre AS Cliente,
SUM(Productos.precio * Pedidos.cantidad) AS Total_Gastado
FROM Clientes
INNER JOIN Pedidos
ON Clientes.cliente_id = Pedidos.cliente_id
INNER JOIN Productos
ON Pedidos.producto_id = Productos.producto_id
GROUP BY Clientes.cliente_id, Clientes.nombre;
-- Ejemplo 5 FILTRADO CON WHERE TRAS UN JOIN
SELECT
Clientes.nombre AS Cliente,
Productos.nombre_producto AS Producto,
Productos.precio AS Precio
FROM Clientes
INNER JOIN Pedidos
ON Clientes.cliente_id = Pedidos.cliente_id
INNER JOIN Productos
ON Pedidos.producto_id = Productos.producto_id
WHERE Productos.precio > 30;
-- Ejemplo 6 IDENTIFICAR CLIENTES SIN COMPRAS (LEFT JOIN + WHERE IS NULL)
SELECT
Clientes.cliente_id,
Clientes.nombre,
Clientes.email
FROM Clientes
LEFT JOIN Pedidos
ON Clientes.cliente_id = Pedidos.cliente_id
WHERE Pedidos.pedido_id IS NULL;
--Ejemplo 7 IDENTIFICAR PRODUCTOS NUNCA VENDIDOS (LEFT JOIN + WHERE IS NULL)
SELECT
Productos.producto_id,
Productos.nombre_producto,
Productos.precio
FROM Productos
LEFT JOIN Pedidos
ON Productos.producto_id = Pedidos.producto_id
WHERE Pedidos.pedido_id IS NULL;
--EJEMPLO 8 CONTEO DE PEDIDOS POR CLIENTE (COUNT, GROUP BY, LEFT JOIN)
SELECT
Productos.nombre_producto AS Producto,
COALESCE(SUM(Pedidos.cantidad), 0) AS Total_Unidades
FROM Productos
LEFT JOIN Pedidos
ON Productos.producto_id = Pedidos.producto_id
GROUP BY Productos.producto_id, Productos.nombre_producto;
-- Ejemplo 9 TOTAL DE UNIDADES VENDIDAS POR PRODUCTO
SELECT
Clientes.nombre AS Cliente,
MAX(Productos.precio) AS Precio_Mas_Alto
FROM Clientes
INNER JOIN Pedidos
ON Clientes.cliente_id = Pedidos.cliente_id
INNER JOIN Productos
ON Pedidos.producto_id = Productos.producto_id
GROUP BY Clientes.cliente_id, Clientes.nombre;
To embed this project on your website, copy the following code and paste it into your website's HTML: