Base de datos Hand to hand

INTEGRANTES

Isabela Mejia Arenas

Lina Marcela Marquinez Palomeque

Yorman Alexander Castaño Suarez

CREATE TABLE ventas ( codventa INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, fecha_venta DATE NOT NULL, coddomicilio INT(11), codtrabajador INT(11) NOT NULL ); CREATE TABLE productventa ( codproductventa INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, cantidad_producto INT(11) NOT NULL, codventa INT(11) NOT NULL, codproducto INT(11) NOT NULL, total int(11) not null ); CREATE TABLE productos ( codproducto INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, codpedido INT(11) NOT NULL, nombre_producto VARCHAR(60) NOT NULL, descripcion TEXT NOT NULL, valor INT(11) NOT NULL, cantidad INT(11) NOT NULL, imagen VARCHAR(30) NOT NULL, estado varchar(10) not null ); CREATE TABLE domicilios ( coddomicilio INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, coddomiciliario INT(11) NOT NULL, direccion VARCHAR(25) NOT NULL, codcliente INT(11) NOT NULL ); CREATE TABLE clientes ( codcliente INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, nombre_cliente VARCHAR(60) NOT NULL, telefono_cliente VARCHAR(15) NOT NULL, correo_cliente varchar(100) not null, estado varchar(10) not null ); CREATE TABLE domiciliarios ( coddomiciliario INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, nombre_domiciliario VARCHAR(60) NOT NULL, telefono_domiciliario VARCHAR(15) NOT NULL, correo_domiciliario varchar(100) not null, estado varchar(10) not null ); CREATE TABLE pedidos ( codpedido INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, cantidad INT(11) NOT NULL, codproveedor INT(11) NOT NULL ); CREATE TABLE proveedores ( codproveedor INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, nombre_proveedor VARCHAR(25) NOT NULL, telefono_proveedor VARCHAR(15) NOT NULL, correo_proveedor VARCHAR(100), estado varchar(10) not null ); CREATE TABLE vendedores ( codtrabajador INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, nombre_trabajador VARCHAR(25) NOT NULL, telefono_trabajador VARCHAR(15) NOT NULL, correo_trabajador VARCHAR(100) NOT NULL, estado varchar(10) not null ); ALTER TABLE productventa ADD CONSTRAINT fk_productventa_venta FOREIGN KEY (codventa) REFERENCES ventas (codventa); ALTER TABLE productventa ADD CONSTRAINT fk_productventa_producto FOREIGN KEY (codproducto) REFERENCES productos (codproducto); ALTER TABLE productos ADD CONSTRAINT fk_producto_pedido FOREIGN KEY (codpedido) REFERENCES pedidos (codpedido); ALTER TABLE pedidos ADD CONSTRAINT fk_pedido_proveedor FOREIGN KEY (codproveedor) REFERENCES proveedores (codproveedor); ALTER TABLE ventas ADD CONSTRAINT fk_venta_vendedor FOREIGN KEY (codtrabajador) REFERENCES vendedores (codtrabajador); ALTER TABLE ventas ADD CONSTRAINT fk_venta_domicilio FOREIGN KEY (coddomicilio) REFERENCES domicilios (coddomicilio); ALTER TABLE domicilios ADD CONSTRAINT fk_domicilio_cliente FOREIGN KEY (codcliente) REFERENCES clientes (codcliente); ALTER TABLE domicilios ADD CONSTRAINT fk_domicilio_domiciliario FOREIGN KEY (coddomiciliario) REFERENCES domiciliarios (coddomiciliario); -- Insertar en la tabla 'proveedores' INSERT INTO proveedores (nombre_proveedor, telefono_proveedor, correo_proveedor, estado) VALUES ('TechCorp Ltd.', '555-0001', 'contacto@techcorp.com', 'activo'), ('Gadgets & More', '555-0002', 'info@gadgetsandmore.com', 'activo'), ('Home Electronics', '555-0003', 'sales@homeelectronics.com', 'activo'), ('NextGen Solutions', '555-0004', 'support@nextgensolutions.com', 'activo'), ('Digital World', '555-0005', 'contact@digitalworld.com', 'activo'), ('Innovative Tech', '555-0006', 'info@innovativetech.com', 'activo'), ('Smart Devices Co.', '555-0007', 'sales@smartdevicesco.com', 'activo'), ('Future Gear', '555-0008', 'service@futuregear.com', 'activo'), ('Electro Hub', '555-0009', 'info@electrohub.com', 'activo'), ('Tech Haven', '555-0010', 'contact@techhaven.com', 'activo'); INSERT INTO vendedores (nombre_trabajador, telefono_trabajador, correo_trabajador, estado) VALUES ('Juan Pérez', '555-1001', 'juan.perez@example.com', 'activo'), ('María García', '555-1002', 'maria.garcia@example.com', 'activo'), ('Andrés López', '555-1003', 'andres.lopez@example.com', 'activo'), ('Isabel Martínez', '555-1004', 'isabel.martinez@example.com', 'activo'), ('Felipe Rodríguez', '555-1005', 'felipe.rodriguez@example.com', 'activo'), ('Camila Fernández', '555-1006', 'camila.fernandez@example.com', 'activo'), ('Sergio Gómez', '555-1007', 'sergio.gomez@example.com', 'activo'), ('Natalia Ramírez', '555-1008', 'natalia.ramirez@example.com', 'activo'), ('Carlos Sánchez', '555-1009', 'carlos.sanchez@example.com', 'activo'), ('Ana María Díaz', '555-1010', 'ana.diaz@example.com', 'activo'); INSERT INTO clientes (nombre_cliente, telefono_cliente, correo_cliente, estado) VALUES ('Pedro Pérez', '555-1234', 'pedro.perez@example.com', 'activo'), ('Ana Fernández', '555-5678', 'ana.fernandez@example.com', 'activo'), ('Carlos Gómez', '555-8765', 'carlos.gomez@example.com', 'activo'), ('María Rodríguez', '555-4321', 'maria.rodriguez@example.com', 'activo'), ('Jorge Martínez', '555-6789', 'jorge.martinez@example.com', 'activo'), ('Laura Gómez', '555-9876', 'laura.gomez@example.com', 'activo'), ('Luis García', '555-3456', 'luis.garcia@example.com', 'activo'), ('Isabel Hernández', '555-6543', 'isabel.hernandez@example.com', 'activo'), ('Antonio López', '555-2345', 'antonio.lopez@example.com', 'activo'), ('Carmen Díaz', '555-6780', 'carmen.diaz@example.com', 'activo'); -- Insertar en la tabla 'domiciliarios' INSERT INTO domiciliarios (nombre_domiciliario, telefono_domiciliario, correo_domiciliario, estado) VALUES ('Andrés Pérez', '555-1100', 'andres.perez@example.com', 'activo'), ('Camila Sánchez', '555-2200', 'camila.sanchez@example.com', 'activo'), ('Felipe Ruiz', '555-3300', 'felipe.ruiz@example.com', 'activo'), ('Natalia Torres', '555-4400', 'natalia.torres@example.com', 'activo'), ('Santiago López', '555-5500', 'santiago.lopez@example.com', 'activo'), ('Gabriela Moreno', '555-6600', 'gabriela.moreno@example.com', 'activo'), ('Ricardo Rodríguez', '555-7700', 'ricardo.rodriguez@example.com', 'activo'), ('Valentina Martínez', '555-8800', 'valentina.martinez@example.com', 'activo'), ('Javier González', '555-9900', 'javier.gonzalez@example.com', 'activo'), ('Mariana Salazar', '555-1001', 'mariana.salazar@example.com', 'activo'); -- Insertar en la tabla 'pedidos' INSERT INTO pedidos (cantidad, codproveedor) VALUES (10, 1), (15, 2), (12, 3), (18, 4), (22, 5), (10, 6), (25, 7), (15, 8), (20, 9), (12, 10); INSERT INTO productos (codpedido, nombre_producto, descripcion, valor, cantidad, imagen, estado) VALUES (1, 'Laptop Dell', 'Dell Inspiron 15', 600, 20, 'laptop_dell.jpg', 'activo'), (2, 'Smartphone Samsung', 'Galaxy S21', 700, 15, 'smartphone_samsung.jpg', 'activo'), (3, 'Televisor LG', 'LG OLED55', 1200, 10, 'televisor_lg.jpg', 'activo'), (4, 'Auriculares Sony', 'WH-1000XM4', 300, 25, 'auriculares_sony.jpg', 'activo'), (5, 'Tablet Apple', 'iPad Air', 500, 30, 'tablet_apple.jpg', 'activo'), (6, 'Reloj Garmin', 'Forerunner 945', 650, 12, 'reloj_garmin.jpg', 'activo'), (7, 'Cámara Canon', 'EOS R5', 2500, 8, 'camara_canon.jpg', 'activo'), (8, 'Altavoz JBL', 'Flip 5', 100, 40, 'altavoz_jbl.jpg', 'activo'), (9, 'Teclado Logitech', 'MX Keys', 120, 22, 'teclado_logitech.jpg', 'activo'), (10, 'Ratón Razer', 'DeathAdder V2', 70, 18, 'raton_razer.jpg', 'activo'); -- Insertar en la tabla 'domicilios' INSERT INTO domicilios (coddomiciliario, direccion, codcliente) VALUES (1, 'Av. Reforma 123, Ciudad de México', 1), (2, 'Calle de Vallehermoso 45, Madrid', 2), (3, 'Avenida Paulista 500, São Paulo', 3), (4, 'Rue de Rivoli 10, Paris', 4), (5, '101 Queen Street, Londres', 5), (6, 'Via della Conciliazione 12, Roma', 6), (7, '1600 Pennsylvania Ave NW, Washington', 7), (8, 'Jalan Sudirman 50, Jakarta', 8), (9, 'Baker Street 221B, Londres', 9), (10, 'Kreuzbergstraße 78, Berlín', 10); INSERT INTO ventas (fecha_venta, coddomicilio, codtrabajador) VALUES ('2024-08-01', 3, 5), ('2024-08-02', 6, 8), ('2024-08-03', 2, 1), ('2024-08-04', 7, 4), ('2024-08-05', 4, 6), ('2024-08-06', 5, 3), ('2024-08-07', 8, 9), ('2024-08-08', 1, 7), ('2024-08-09', 9, 2), ('2024-08-10', 10, 10); -- Insertar en la tabla 'productventa' INSERT INTO productventa (cantidad_producto, codventa, codproducto, total) VALUES (2, 1, 1, 1200), -- Laptop Dell (valor: 600, cantidad: 2, total: 1200) (3, 2, 2, 2100), -- Smartphone Samsung (valor: 700, cantidad: 3, total: 2100) (1, 3, 3, 1200), -- Televisor LG (valor: 1200, cantidad: 1, total: 1200) (4, 4, 4, 1200), -- Auriculares Sony (valor: 300, cantidad: 4, total: 1200) (5, 5, 5, 2500), -- Tablet Apple (valor: 500, cantidad: 5, total: 2500) (2, 6, 6, 1300), -- Reloj Garmin (valor: 650, cantidad: 2, total: 1300) (1, 7, 7, 2500), -- Cámara Canon (valor: 2500, cantidad: 1, total: 2500) (10, 8, 8, 1000), -- Altavoz JBL (valor: 100, cantidad: 10, total: 1000) (6, 9, 9, 720), -- Teclado Logitech (valor: 120, cantidad: 6, total: 720) (3, 10, 10, 210); -- Ratón Razer (valor: 70, cantidad: 3, total: 210)

CONSULTAS

Nota

Las que no presentan imagen no dieron resultados, pero su codigo no presenta error

-- Cantidad de productos vendida por cada trabajador-- Hecho SELECT t.nombre_trabajador, SUM(p.cantidad_producto) as total_vendido FROM productventa p inner join ventas v on(v.codventa = p.codventa) INNER JOIN trabajadores t ON v.codtrabajador = t.codtrabajador GROUP BY t.nombre_trabajador; -preguntar a profe por cambio— --Ventas y saber quien las vendio y entrego— cambiar por otro (preguntar por sugerencias al profe) SELECT v.codventa, v.fecha_venta, v.cantidad_vendida, t.nombre_trabajador, d.nombre_domiciliario FROM ventas v INNER JOIN trabajadores t ON v.codtrabajador = t.codtrabajador LEFT JOIN domiciliarios d ON v.coddomiciliario = d.coddomiciliario; --ganacias totales— Preguntar al profe para saber como hacerlo. (IMPORTANTE) Esto es un procedimiento mas que una consulta SELECT v.fecha_venta, SUM(p.valor * pv.cantidad_producto) as total_ganancias FROM ventas v INNER JOIN productventa pv ON v.codventa = pv.codventa INNER JOIN productos p ON pv.codproducto = p.codproducto WHERE v.fecha_venta = p_fecha_venta GROUP BY v.fecha_venta; --Cuantos productos han entregado los domiciliarios- Hecho SELECT d.nombre_domiciliario, COUNT(pv.cantidad_producto) as total_productos_entregados FROM domiciliarios d INNER JOIN ventas v ON d.coddomiciliario = v.coddomiciliario INNER JOIN productventa pv ON v.codventa = pv.codventa Where estado= “activo” GROUP BY d.coddomiciliario; --cuantas ventas a entregado un domiciliario— Hecho SELECT d.nombre_domiciliario, COUNT(v.codventa) as total_ventas_entregadas FROM domiciliarios d JOIN ventas v ON d.coddomiciliario = v.coddomiciliario GROUP BY d.coddomiciliario; --cuantos pedidos se tiene de un proveedor— Hecho SELECT pd.nombre_proveedor, COUNT(p.codpedido) as total_pedidos FROM proveedores pd JOIN pedidos p ON pr.codproveedor = pd.codproveedor GROUP BY pd.codproveedor; --Cuantos productos se han vendido en un dia— Hecho SELECT p.cantidad_vendida AS productos_vendidos, v.fecha_venta FROM productventa p Inner join ventas v on(p.codventa = v.codventa) WHERE v.fecha_venta LIKE “2024-01-02” --que cliente ha pedido mas productos en un dia— Hecho SELECT c.nombre_cliente, v.fecha_venta, SUM(v.cantidad_vendida) AS total_productos FROM clientes c INNER JOIN domicilios d ON c.codcliente = d.codcliente INNER JOIN ventas v ON d.coddomicilio = v.coddomicilio WHERE v.fecha_venta = '2024-01-01' GROUP BY c.nombre_cliente, v.fecha_venta ORDER BY total_productos DESC LIMIT 1; -- Cuantos se ha vendido de un producto en especifico SELECT sum(v.cantidad_vendida) AS cantidad_vendida, p.nombre_producto AS producto_vendido FROM ventas v INNER JOIN productventa pv ON (pv.codventa = v.codventa) INNER JOIN productos p ON (pv.codproducto = p.codproducto) where p.nombre_producto = “Tablet Apple” GROUP BY p.nombre_producto; --Cuantos productos hay en stock- Hecho select sum(cantidad) as Cantidad_total_productos from Productos --Cuantos productos hay en stock producto especifico- preguntar al profe si se puede hacer una comparación de este único producto con el resto de productos, es decir, por ejemplo comparar la cantidad de sándwich con el total que hay de stock de todas las comidas, no deseo compararlo con solo una. select sum(cantidad) as Cantidad_total_productos where nombre_producto = “papas” from Productos --Productos con menos stock— Hecho SELECT nombre_producto, cantidad FROM productos ORDER BY cantidad ASC Limit 5; --Productos con mas stock -- Hecho SELECT nombre_producto, cantidad FROM productos ORDER BY cantidad desc Limit 5; --Productos los cuales no se han vendido— preguntar al profe (se trata de como excluir) SELECT nombre_producto FROM productos WHERE id_producto NOT IN ( SELECT id_producto FROM productventa);