--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'); 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'); -- 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: