use encuentro2; ALTER TABLE facturaproducto ADD COLUMN puProdxFact DECIMAL(7,2) NULL AFTER cantProdxFact; select * from facturaproducto; select p.precio, fp.codprod from productos p join facturaproducto fp on p.codprod = fp.codprod; select distinct p.precio, fp.codprod from productos p join facturaproducto fp on p.codprod = fp.codprod; update facturaproducto set puProdxFact = 18.60 where codProd = 18; update facturaproducto set puProdxFact = 34.76 where codProd = 34; select s.NombreSuc as Sucursal, s.dirSuc as Direccion from sucursal s join stock st on s.codSuc = st.codSuc join productos p on p.codProd = st.codProd join proveedor pr on pr.cuitProveedor = p.cuitProveedor; select * from rubro join productos on rubro.codrubro = productos.codrubro; select * from productos; select * from rubro; update rubro set codrubro = 100, descripcion = 'ferreteria' where codrubro = 345; update rubro set codrubro = 200, descripcion = 'construccion' where codrubro = 476; update rubro set codrubro = 300, descripcion = 'electricidad' where codrubro = 578; update productos set codrubro = 200; INSERT INTO productos (codProd, descProd, precio, cuitProveedor, codRubro) VALUES ('38', 'foco bajo consumo', '13', '27257869877', '300'); INSERT INTO productos (codProd, descProd, precio, cuitProveedor, codRubro) VALUES ('39', 'cable 2x1 x m', '8', '27257869878', '300'); INSERT INTO stock (codProd, codSuc, cantExistente) VALUES (38, 130, 40); INSERT INTO stock (codProd, codSuc, cantExistente) VALUES (39, 130, 3); INSERT INTO factura (codSuc, codFactura, fechaFact, vendedor) VALUES (130, 1247, '2012-09-15', 'Ramon Alvarez'); ALTER TABLE factura ADD COLUMN codSuc INT NULL
FIRST ;
UPDATE factura SET codSuc='130' WHERE codFactura='1246'; UPDATE factura SET codSuc='142' WHERE codFactura='23456'; ALTER TABLE factura CHANGE COLUMN codSuc codSuc INT(11) NOT NULL , DROP PRIMARY KEY, ADD PRIMARY KEY (`codFactura`, `codSuc`) ;
ALTER TABLE facturaproducto ADD COLUMN CodSuc INT NULL
FIRST ;
UPDATE facturaproducto SET CodSuc='142' WHERE codProd='18' and codFactura ='23456'; UPDATE facturaproducto SET CodSuc='130' WHERE codProd='34' and codFactura='1246'; UPDATE facturaproducto SET CodSuc='142' WHERE codProd='34' and codFactura='23456'; INSERT INTO facturaproducto (CodSuc, codFactura, codProd, cantProdxFact, puProdxFact) VALUES (142, 1246, 39, 15, 8); -- Para eleminiar la clave primaria ALTER TABLE facturaproducto DROP FOREIGN KEY facturaproducto_ibfk_1 , DROP FOREIGN KEY facturaproducto_ibfk_2 ; ALTER TABLE facturaproducto DROP PRIMARY KEY ; -- Ordeno las columnas ALTER TABLE facturaproducto CHANGE COLUMN codFactura codFactura INT(11) NULL DEFAULT '0' AFTER CodSuc ; -- Creo la clave primaria ALTER TABLE facturaproducto ADD PRIMARY KEY (CodSuc, codFactura, codProd) ; -- Creo las claves foraneas ALTER TABLE facturaproducto ADD FOREIGN KEY (codSuc) REFERENCES Sucursal (codSuc) , ADD FOREIGN KEY (codFactura) REFERENCES factura (codFactura) , ADD FOREIGN KEY (codProd) REFERENCES productos (codProd) ; -- Insertamos algunos datos INSERT INTO factura (codSuc, codFactura, fechaFact, vendedor) VALUES (142, 1246, '2012-03-31', 'Jorge Lopez'); select f.codSuc, f.codfactura, f.fechafact, fp.CodProd, fp.cantProdxFact, fp.puProdxFact from factura f join facturaproducto fp on (f.codFactura = fp.codFactura and f.codsuc = fp.codsuc); select f.codSuc, f.codfactura, f.fechafact, fp.CodProd, fp.cantProdxFact, fp.puProdxFact, fp.cantProdxFact*fp.puProdxFact as `Total Linea` from factura f join facturaproducto fp on (f.codFactura = fp.codFactura and f.codsuc = fp.codsuc); -- Encuentro el total de factura select f.codSuc, f.codfactura, f.fechafact, sum(fp.cantProdxFact*fp.puProdxFact) as `Total Linea` from factura f join facturaproducto fp on (f.codFactura = fp.codFactura and f.codsuc = fp.codsuc) group by f.codSuc, f.codfactura, f.fechafact
having `Total Linea` > 122; -- creamos una vista llamada total facturas create view totalfacturas as select f.codSuc, f.codfactura, f.fechafact, sum(fp.cantProdxFact*fp.puProdxFact) as `Total` from factura f join facturaproducto fp on (f.codFactura = fp.codFactura) and (f.codsuc = fp.codsuc) group by f.codSuc, f.codfactura, f.fechafact; select * from totalfacturas; select codsuc as Sucursal, codfactura, total from totalfacturas; select count(*) as `Cantidad de filas`, min(total) as Minimo, max(total) as Maximo, avg(total) as Promedio from totalfacturas; -- la utilizamos para disminuir la complejidad de la consulta select s.nombreSuc, r.descripcion from totalfacturas tf join sucursal s on tf.codsuc = s.codsuc join facturaproducto fp on (fp.codsuc = tf.codsuc and fp.codfactura=tf.codfactura) join productos p on fp.codprod = p.codprod join rubro r on r.codrubro = p.codrubro where tf.total > 120 and tf.fechafact < '2012-09-07'; -- veamos otra consulta select sk.codsuc, p.descProd, sk.cantExistente, pv.razonSocial from productos p join proveedor pv on p.cuitProveedor = pv.cuitProveedor join stock sk on p.codProd = sk.codProd where sk.codsuc = 130 ; -- ,and sk.cantexistente < 10 -- ,and pv.cuitProveedor=27257869878; -- ahora realicemos un aumento de precio del 5% a todos los productos update productos set precio = precio * 1.05; select f.codSuc, f.codfactura, f.fechafact, fp.CodProd, fp.cantProdxFact, fp.puProdxFact from factura f left join facturaproducto fp on (f.codFactura = fp.codFactura and f.codsuc = fp.codsuc);