CREATE TABLE tblventas ( idVenta int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, fechaVenta date NOT NULL, total decimal(10,2) NOT NULL, idCliente int(11) NOT NULL, idTrabajador int(11) NOT NULL ); CREATE TABLE tbltrabajadores ( idTrabajador int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, nombreTrabajador varchar(45) NOT NULL, documentoTrabajador varchar(45) NOT NULL, telefonoTrabajador varchar(10) NOT NULL, direccionTrabajador varchar(45) NOT NULL ); CREATE TABLE tblproveedores ( idProveedor int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, nombreProveedor varchar(45) NOT NULL, telefonoProveedor varchar(10) NOT NULL, direccionProveedor varchar(45) NOT NULL ); CREATE TABLE tblproductos ( idProducto int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, nombreProducto varchar(45) NOT NULL, descripcion text ); CREATE TABLE tbllotes ( idLote int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, precioLote decimal(10,2) NOT NULL, fechaVencimiento date NOT NULL, idProveedor int(11) NOT NULL ); CREATE TABLE tblinventario_productos ( idInventarioProducto int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, precioUnitario decimal(10,2) NOT NULL, cantidad int(11) NOT NULL, idProducto int(11) NOT NULL, idLote int(11) NOT NULL ); CREATE TABLE tbldomiciliarios ( idDomiciliario int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, nombreDomiciliario varchar(45) NOT NULL, documentoDomiciliario varchar(45) NOT NULL, telefonoDomiciliario varchar(45) NOT NULL, direccionDomiciliario varchar(45) NOT NULL, salario decimal(10,2) NOT NULL ); CREATE TABLE tbldetalle_ventas ( idDetalleVenta int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, cantidad int(11) NOT NULL, total decimal(10,2) NOT NULL, idVenta int(11) NOT NULL, idInventario_Producto int(11) NOT NULL, idDomiciliario int(11) ); CREATE TABLE tblclientes ( idCliente int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, documento varchar(45) NOT NULL, nombreCliente varchar(45) NOT NULL, telefonoCliente varchar(10) NOT NULL, direccionCliente varchar(45) NOT NULL ); CREATE TABLE tblcargos ( idCargo int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, tipo_de_cargo varchar(60) NOT NULL ); CREATE TABLE tblcargo_trabajadores ( idCargo_Trabajador int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, salarioTrabajador decimal(10,2) NOT NULL, idTrabajador int(11) NOT NULL, idCargo int(11) NOT NULL ); ALTER TABLE tblcargo_trabajadores ADD CONSTRAINT fk_trab_cargo FOREIGN KEY (idTrabajador) REFERENCES tbltrabajadores(idTrabajador), ADD CONSTRAINT fk_cargo_trab FOREIGN KEY (idCargo) REFERENCES tblcargos(idCargo); ALTER TABLE tbldetalle_ventas ADD CONSTRAINT fk_ven_detaven FOREIGN KEY (idVenta) REFERENCES tblventas(idVenta), ADD CONSTRAINT fk_prod_detaven FOREIGN KEY (idInventario_Producto) REFERENCES tblinventario_productos(idInventarioProducto), ADD CONSTRAINT fk_domi_detaven FOREIGN KEY (idDomiciliario) REFERENCES tbldomiciliarios(idDomiciliario); ALTER TABLE tblinventario_productos ADD CONSTRAINT fk_prod_inv FOREIGN KEY (idProducto) REFERENCES tblproductos(idProducto), ADD CONSTRAINT fk_lote_inv FOREIGN KEY (idLote) REFERENCES tbllotes(idLote); ALTER TABLE tbllotes ADD CONSTRAINT fk_lote_prov FOREIGN KEY (idProveedor) REFERENCES tblproveedores(idProveedor); ALTER TABLE tblventas ADD CONSTRAINT fk_tra_ven FOREIGN KEY (idTrabajador) REFERENCES tbltrabajadores(idTrabajador), ADD CONSTRAINT fk_cli_ven FOREIGN KEY (idCliente) REFERENCES tblclientes(idCliente); INSERT INTO tbltrabajadores(nombreTrabajador,documentoTrabajador,telefonoTrabajador,direccionTrabajador) VALUES ('Maria Fernandez','123456789','3101234567','Calle 10C #5-30'),('Juan Lopez','987654321','3159876543','Cra. 15A #4-20'),('Ana Martinez','456789123','3204567890','Calle 20AA #20-30'),('Luisa Gomez','7891234567','3007891234','Calle 49C #5-38'),('Carlos Rodriguez','2345678955','3172345678','Cra. 58 #90'),('Pedro Ramirez','5678901232','3185678901','Calle 49C #5-90'),('Laura Vargas','9012345676','3149012345','Calle 70B #7-80'),('Andres Perez','3456789017','3193456789','Cra. 8A #45-9'),('Diana Gonzalez','6789012345','3216789012','Calle 20 #8-10'),('Santiago Herrera','0123456780','3130123456','Calle 48DD #10-20'),('Andres Sanchez','5432109875','3225432109','Calle 80 #50-4'),('Javier Ramirez','8765432103','3168765432','Cra. 102 #42-67'),('Natalia Gutierrez','2109876543','3102109876','Calle 44 #103-69'),('Esteban Rojas','6543210985','3196543210','Cra. 99 #42-17'),('Carolina Martinez','1098765437','3171098765','Cra. 94 #38-2'),('Andres Mesa','4321098764','3134321098','Calle 35B #98-2'),('Sofia Duque','9876543210','3219876543','Cra. 106C #35-52'),('Camilo Castaño','8765432176','3188765432','Calle 35D #108A-61A'),('Valentina Ortega','7654321096','3247654321','Calle 35F #109-59'),('Diego Cardenas','2100895645','3102904876','Calle 35B# 8-87'); INSERT INTO tblcargos(tipo_de_cargo) VALUES ('Gerente de Venta'),('Subgerente de Tienda'),('Asistente de gerente'),('Encargado de Compras'),('Encargado de Inventario'),('Vendedor de Mostrador'),('Asesor de Productos Naturales'),('Caja y Atencion al Cliente'),('Auxiliar de Limpieza y Mantenimiento'),('Especialista en Marketing Digital'),('Nutricionista o Asesor en Alimentacion'),('Recepcionista'),('Promotor de Ventas'),('Especialista en Redes Sociales'),('Personal de Logistica y Recepcion de Mercancia'),('Domiciliario'); INSERT INTO tblcargo_trabajadores(salarioTrabajador,idTrabajador,idCargo) VALUES (10000000.00,6,1),(5700000.00,2,2),(5130000.00,7,8),(4550000.00,5,6),(3970000.00,8,7),(3400000.00,9,9),(3500000.00,13,11),(7200000.00,14,13),(4200000.00,17,12),(6800000.00,20,5),(4800000.00,18,10),(7500000.00,17,14),(3600000.00,15,3),(8500000.00,4,11),(7200000.00,1,4); INSERT INTO tblclientes(documento,nombreCliente,telefonoCliente,direccionCliente) VALUES ('9876543210','Juan Pérez','3109876546','Carrera 78 #32-45'),('2468109753','Laura Gómez','3208765434','Calle 56 #23-89'),('1357924680','Carlos Sánchez','3006543215','Diagonal 10A #12-34'),('3698521470','Ana Rodriguez','3105432101','Transversal 15 #56-78'),('9871236540','Diego Herrera','3159876543','Avenida 80 #45-67'),('4567890123','Camila Castro','3187876543','Calle 90 #32-45'),('6543210987','Andrés López','3226543219','Carrera 70 #12-34'),('1234567891','Paola Ramírez','3143543210','Calle 100 #56-78'),('9876543219','Daniel Álvarez','3172987654','Diagonal 30 #45-67'),('1234567890','María Rodríguez','3001123456','Calle 123 #45-67'),('3692581470','Carolina Valencia','3198765432','Transversal 25 #32-45'),('1357902468','Luisa Restrepo','3116543211','Avenida 60 #12-34'),('2580147963','Sebastián Duque','3135432109','Calle 110 #56-78'),('9874563210','Valentina Torres','3169876546','Carrera 85 #45-67'),('1472583690','Mateo Giraldo','3218765436','Diagonal 20 #32-45'),('7539518246','Mariana López','3126543211','Calle 95 #12-34'),('3691472580','Santiago Muñoz','3185432105','Transversal 35 #56-78'),('8523697410','Paula Gómez','3229876547','Diagonal 40 #12-34'),('1236985740','Mateo Vélez','3148765437','Carrera 95 #32-45'),('1597532468','Valeria Álvarez','3196543210','Avenida 75 #45-67'); INSERT INTO tbldomiciliarios(nombreDomiciliario,telefonoDomiciliario,direccionDomiciliario,documentoDomiciliario,salario) VALUES ('Andrés Ramírez','3188876543','Calle 67 #89-12','2345678901',1300000.00),('Camila Herrera','3152345677','Carrera 34 #56-78','3456789012',1300000.00); INSERT INTO tblproductos(nombreProducto,descripcion) VALUES ('Té de hierbas para la digestión','Una mezcla de hierbas como menta, jengibre y manzanilla que ayuda a calmar el malestar estomacal y promover la digestión saludable.'),('Aceite de Coco organico','Extraído de la pulpa del coco, este aceite es rico en ácidos grasos saludables y se puede usar para cocinar, hidratar la piel y el cabello, y como enjuague bucal para mejorar la salud dental.'),('Vinagre de Manzana','Este vinagre sin filtrar contiene bacterias probióticas beneficiosas y puede ayudar a equilibrar el pH del cuerpo, mejorar la digestión y promover la pérdida de peso.'),('Miel de Manuka Cruda\n','Es un tesoro de la naturaleza, reconocida por sus potentes propiedades medicinales y su exquisito sabor. Producida por abejas que polinizan el arbusto de Manuka, nativo de las regiones vírgenes de Nueva Zelanda y Australia, esta miel única se distingue por su contenido excepcionalmente alto de compuestos bioactivos, especialmente el metilglioxal (MGO), que confiere poderosas propiedades antibacterianas y antioxidantes.\r \r '),('Aceite de Lavanda','Conocido por sus propiedades relajantes, el aceite esencial de lavanda se puede usar en difusores para promover el sueño, aliviar el estrés y calmar la mente.'),('Miel cruda de abeja','La miel sin procesar contiene enzimas y antioxidantes que pueden ayudar a fortalecer el sistema inmunológico, aliviar la tos y mejorar la salud de la piel cuando se aplica tópicamente.'),('Jengibre fresco','Esta especia versátil no solo agrega sabor a los platos, sino que también puede aliviar las náuseas, reducir la inflamación y mejorar la circulación sanguínea.'),('Aloe vera gel puro','Conocido por sus propiedades curativas para la piel, el gel de aloe vera se puede aplicar tópicamente para calmar quemaduras solares, irritaciones cutáneas y promover la cicatrización de heridas.'),('Capsulas de Curcuma','La cúrcuma es conocida por sus propiedades antiinflamatorias y antioxidantes. Las cápsulas de cúrcuma pueden ayudar a aliviar el dolor articular, mejorar la función cognitiva y apoyar la salud del corazón.'),('Algas marinas secas','Ricas en minerales como yodo, calcio y hierro, las algas marinas secas se pueden agregar a sopas, ensaladas y platos de mariscos para aumentar el contenido nutricional y promover la salud tiroidea.'),('Semillas de Chía','Pequeñas semillas ricas en fibra, ácidos grasos omega-3 y antioxidantes, ideales para añadir a batidos, yogures o ensaladas para un impulso nutricional.'),('Proteína de Guisante Orgánica','Fuente de proteína vegetal completa, adecuada para veganos y vegetarianos, ideal para batidos después del entrenamiento o para aumentar la ingesta de proteínas en la dieta.'),('Mantequilla de Almendra Orgánica','Una alternativa saludable a la mantequilla de maní, rica en grasas saludables, proteínas y fibra, perfecta para untar en pan integral o añadir a batidos.'),('Bayas de Goji Orgánicas','Pequeñas bayas rojas cargadas de antioxidantes y nutrientes, conocidas por sus presuntos beneficios para la salud, como mejorar la salud ocular y fortalecer el sistema inmunológico.'),('Espirulina en Polvo','Un superalimento verde cargado de proteínas, vitaminas y minerales, utilizado en batidos y recetas para aumentar la energía y apoyar la salud general.'),('Harina de Almendra','Una alternativa sin gluten a la harina de trigo, rica en proteínas, grasas saludables y baja en carbohidratos, ideal para hornear productos horneados bajos en carbohidratos.'),('Aceite de Ricino Orgánico','Un aceite espeso y nutritivo utilizado en productos de cuidado capilar y de la piel para promover el crecimiento del cabello, fortalecer las uñas y mejorar la salud de la piel.'),('Semillas de Calabaza Crudas','Rica en ácidos grasos omega-3, zinc y antioxidantes, se utilizan como aperitivo saludable o se añaden a ensaladas, yogures o horneadas en productos horneados.'),('Cacao en Polvo Orgánico','Polvo de cacao sin procesar, rico en antioxidantes y nutrientes como el magnesio y el hierro, utilizado para hacer chocolate caliente, batidos y postres saludables.'),('Semillas de Lino Orgánicas',"Una excelente fuente de fibra, ácidos grasos omega-3 y lignanos, se pueden agregar a batidos, cereales o productos horneados para aumentar el contenido de nutrientes."); INSERT INTO tblproveedores(nombreProveedor,telefonoProveedor,direccionProveedor) VALUES ('Naturista Viva S.A.S','3231234567','Cra. 45 #23-56'),('Ecosalud Naturista LTDA','3202345678','Calle 78 #34-21'),('Hierbas Y Flores S.A.','3013456789','Avenida Oriental #67-89'),('BioNatur S.A.S','3134567890','Calle 56 #12-34'),('Verde Saludable E.U.','3115678901','Cra. 90 #45-67'),('NutriVida Naturista S.A.S','3146789012','Calle 32 #78-90'),('Herbolario Medellin LTDA','3157890123','Calle 80 #43-21'),('Esencia Natural S.A.S','3188901234','Cra. 67 #32-10'),('Ecovida Medicina Natural','3059012345','Avenida Las Palmas #56-78'),('Botanica Saludable E.U.','3000123456','Calle 90 #21-43'),('Herboristeria Medellin','3179876543','Cra. 45 #67-32'),('Salud Y Bienestar Natural','3028765432','Calle 78 #90-21'),('Vida Natural S.A.S','3017654321','Avenida Oriental #43-67'),('Raices Verdes S.A.S','3196543210','Calle 56 #78-90'),('Naturismo Medellin E.U.','3165432109','Cra. 90 #32-10'); INSERT INTO tbllotes(precioLote,fechaVencimiento,idProveedor) VALUES (150000.00,'2025-02-28',7),(240000.00,'2024-11-30',10),(195000.00,'2025-05-31',12),(120000.00,'2024-09-15',1),(210000.00,'2024-10-31',2),(165000.00,'2025-03-15',4),(270000.00,'2024-08-30',5),(180000.00,'2025-01-31',3),(90000.00,'2024-12-15',11),(135000.00,'2024-11-30',15),(187500.00,'2024-12-15',2),(137500.00,'2024-08-31',5),(250000.00,'2025-04-30',12),(100000.00,'2024-10-15',14),(162500.00,'2024-11-30',1),(212500.00,'2025-01-31',4),(125000.00,'2024-09-30',6),(237500.00,'2025-03-15',2),(150000.00,'2024-12-31',8),(87500.00,'2025-06-30',9); INSERT INTO tblinventario_productos(precioUnitario,cantidad,idProducto,idLote) VALUES (15000.00,10,11,1),(24000.00,10,9,2),(19500.00,10,6,3),(12000.00,10,1,4),(21000.00,10,2,5),(16500.00,10,13,6),(27000.00,10,15,7),(18000.00,10,8,8),(9000.00,10,7,9),(13500.00,10,3,10),(18750.00,10,16,11),(13750.00,10,5,12),(25000.00,10,4,13),(10000.00,10,18,14),(16250.00,10,19,15),(21250.00,10,12,16),(12500.00,10,10,17),(23750.00,10,14,18),(15000.00,10,17,19),(8750.00,10,20,20); INSERT INTO tblventas(fechaVenta,total,idCliente,idTrabajador) VALUES ('2024-05-07',8750.00,1,8),('2024-05-07',120000.00,1,8),('2024-05-08',180000.00,6,6),('2024-05-08',210000.00,3,12),('2024-05-09',55000.00,2,6),('2024-05-10',90000.00,7,8),('2024-05-10',80000.00,4,6),('2024-05-11',65000.00,5,12),('2024-05-11',150000.00,8,6),('2024-05-11',40000.00,9,8),('2024-05-12',200000.00,11,8),('2024-05-12',75000.00,12,12),('2024-05-13',85000.00,13,6),('2024-05-13',95000.00,14,6),('2024-05-14',55000.00,15,8),('2024-05-14',110000.00,16,12),('2024-05-14',130000.00,17,12),('2024-05-14',100000.00,18,8),('2024-05-15',75000.00,19,6),('2024-05-15',45000.00,20,8),('2024-05-15',70000.00,10,6); INSERT INTO tbldetalle_ventas(cantidad,total,idVenta,idDomiciliario, idInventario_Producto) VALUES (1,8800.00,1,NULL,20),(5,120000.00,2,NULL,13),(10,180000.00,3,NULL,11),(8,210000.00,4,NULL,7),(4,55000.00,5,1,13),(6,90000.00,6,2,1),(4,90000.00,7,NULL,2),(6,68000.00,8,NULL,4),(9,146000.00,9,NULL,6),(5,40000.00,10,NULL,9),(10,200000.00,11,NULL,5),(6,75000.00,12,1,17),(8,87000.00,13,NULL,2),(7,95000.00,14,NULL,20),(6,50000.00,15,NULL,10),(5,106250.00,16,2,16),(6,115000.00,17,2,3),(4,95000.00,18,NULL,18),(5,81000.00,19,1,15),(5,50000.00,20,1,14),(5,73000.00,21,NULL,19); cual fue el producto mas vendido en el ultimo mes SELECT P.nombreProducto, COUNT(P.idProducto) AS total_venta FROM tblproductos P INNER JOIN tblinventario_productos I ON( I.idProducto = P.idProducto) INNER JOIN tbldetalle_ventas T ON( T.idInventario_Producto = I.idInventarioProducto) INNER JOIN tblventas V ON( V.idVenta = T.idVenta) WHERE MONTH(V.fechaVenta) = MONTH(CURDATE()) GROUP BY P.nombreProducto ORDER BY total_venta DESC LIMIT 1; cual fue el producto menos vendido en el ultimo mes SELECT P.nombreProducto, COUNT(P.idProducto) AS total_venta FROM tblproductos P INNER JOIN tblinventario_productos I ON( I.idProducto = P.idProducto) INNER JOIN tbldetalle_ventas T ON( T.idInventario_Producto = I.idInventarioProducto) INNER JOIN tblventas V ON( V.idVenta = T.idVenta) WHERE MONTH(V.fechaVenta) = MONTH(CURDATE()) GROUP BY P.nombreProducto ORDER BY total_venta ASC LIMIT 1; Mostrar el nombre del cliente y el total de la venta para todas las ventas. SELECT c.nombreCliente, SUM(v.total) AS total_venta FROM tblventas v INNER JOIN tblclientes c ON v.idCliente = c.idCliente GROUP BY c.nombreCliente; Listar los trabajadores que tienen un salario superior a 7,000,000. SELECT t.nombreTrabajador FROM tbltrabajadores t INNER JOIN tblcargo_trabajadores ct ON t.idTrabajador = ct.idTrabajador WHERE ct.salarioTrabajador > 7000000.00; Encontrar el nombre del trabajador y su cargo. SELECT t.nombreTrabajador, c.tipo_de_cargo FROM tbltrabajadores t INNER JOIN tblcargo_trabajadores ct ON (t.idTrabajador = ct.idTrabajador) INNER JOIN tblcargos c ON (ct.idCargo = c.idCargo); Mostrar la cantidad de productos vendidos en cada venta SELECT idVenta, COUNT(*) AS _productos_vendidos FROM tbldetalle_ventas GROUP BY idVenta; Listar todos los productos que tengan un precio unitario entre 10,000.00 y 20,000.00. SELECT * FROM tblproductos p inner join tblinventario_productos ip on p.idproducto = ip.idProducto WHERE precioUnitario BETWEEN 10000.00 AND 20000.00; Mostrar el nombre del proveedor y la dirección de su proveeduría. SELECT pr.nombreProveedor, pr.direccionProveedor, p.* FROM tblproveedores pr INNER JOIN tbllotes l ON pr.idProveedor = l.idProveedor INNER JOIN tblinventario_productos ip ON l.idLote = ip.idLote INNER JOIN tblproductos p ON ip.idProducto = p.idProducto; Encontrar el nombre del producto y la fecha de vencimiento de su lote. SELECT p.nombreProducto, l.fechaVencimiento FROM tblproductos p INNER JOIN tblinventario_productos ip ON p.idProducto = ip.idProducto INNER JOIN tbllotes l ON ip.idLote = l.idLote; Obtener el nombre del cliente y su teléfono para todas las ventas. SELECT c.nombreCliente, c.telefonoCliente, v.* FROM tblclientes c INNER JOIN tblventas v ON c.idCliente = v.idCliente; Listar todos los detalles de ventas donde el total sea mayor que 100,000.00. SELECT * FROM tbldetalle_ventas INNER JOIN tblventas ON tbldetalle_ventas.idVenta = tblventas.idVenta WHERE tblventas.total > 100000.00; Mostrar el nombre del trabajador y su salario para todos los cargos. SELECT t.nombreTrabajador, ct.salarioTrabajador, c.tipo_de_cargo FROM tbltrabajadores t INNER JOIN tblcargo_trabajadores ct ON t.idTrabajador = ct.idTrabajador INNER JOIN tblcargos c ON ct.idCargo = c.idCargo; Obtener el nombre del proveedor y su teléfono para todos los productos. SELECT pr.nombreProveedor, pr.telefonoProveedor, p.* FROM tblproveedores pr INNER JOIN tbllotes l ON pr.idProveedor = l.idProveedor INNER JOIN tblinventario_productos ip ON l.idLote = ip.idLote INNER JOIN tblproductos p ON ip.idProducto = p.idProducto; Listar todos los productos que tengan un precio unitario menor que 15,000.00. SELECT * FROM tblproductos p inner JOIN tblinventario_productos ip on p.idProducto = ip.idProducto WHERE precioUnitario < 15000.00;