Está en la página 1de 10

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA PROGRAMA DE INGENIERIA DE SISTEMAS CURSO DE BASE DE DATOS

BASICO

APORTE FORO DE TRABAJO FINAL CONSULTAS DE CONCATENACION , AGREGACION, Y CARGAS DE TABLAS

BEDOYA ORTIZ JOSE DARIO C.C. 10770623 GRUPO: 301330_4

TUTOR: MARIA DORA ALBA SNCHEZ GMEZ [DIRECTORA]

14 DE JUNIO DE 2013 BOGOTA DC

CARGA DE REGISTROS A LA TABLA ARTICULOS Por ser una tabla base en el modelo se inicia con ella de la siguiente forma LOAD DATA INFILE 'D://U4//base_de_datos_basico//trabajo_final//articulos_4.csv' INTO TABLE articulos FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n';

Para Visualizar los datos de carga escribimos select * from artculos limit 3;

Se cargaron mas de 3 artculos; fueron 32 como muestra la imagen anterior, pero para efectos de visualizacin solo mostramos con la instruccin limit 3 tan solo los 3 primeros registros.

CARGA DE REGISTROS A LA TABLA PROVEDEDORES La carga de registros a la tabla proveedores se hizo de la siguiente manera LOAD DATA INFILE 'D://U4//base_de_datos_basico//trabajo_final//proveedores.csv' INTO TABLE proveedores FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'; Teniendo entonces en el motor de base de datos la siguiente informacin:

CARGA DE LA TABLA VENDEDORES La Carga de vendedores se realizo al igual que los anteriores preparando un archivo plano separado por punto y comas; estos se anexan en el repositorio http://78.47.32.10/~dentistr/14062013/ disponibles para su consulta

Para Visualizar los datos de carga escribimos select * from vendedores limit 3;

CARGA DE LA TABLA DE COMPRAS Y CONSULTAS DE AGREGACIN Antes de seguir con las tablas hija dejemos claro que si se ha desarrollado el script para la generacin de llaves forneas por lo que lo colocamos aqu de nuevo resaltado con verde:
CREATE TABLE IF NOT EXISTS `mydb`.`compras` ( `idcompras` INT NOT NULL , `numero_de_factura_compra` VARCHAR(45) NULL , `fecha_iongreso_factura` DATE NULL , `fecha_de_vencimiento` DATE NULL , `estado_de_pago_factura` VARCHAR(45) NULL , `articulos_idarticulo` INT NOT NULL , `cantidad_de_articulos_comprados` INT NULL , `costo_unitario_art_comprado` FLOAT NULL , `subtotal_art_comprado` FLOAT NULL , `valor_total_compra` FLOAT NULL , `fecha_ingreso_a_sistema` DATE NULL , `hora_de_ingreso_a_sistema` TIME NULL , `proveedores_idproveedor` INT NOT NULL , PRIMARY KEY (`idcompras`) , INDEX `fk_compras_articulos1_idx` (`articulos_idarticulo` ASC) , INDEX `fk_compras_proveedores1_idx` (`proveedores_idproveedor` ASC) , CONSTRAINT `fk_compras_articulos1` FOREIGN KEY (`articulos_idarticulo` ) REFERENCES `mydb`.`articulos` (`idarticulo` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_compras_proveedores1` FOREIGN KEY (`proveedores_idproveedor` ) REFERENCES `mydb`.`proveedores` (`idproveedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `mydb`.`ventasarticulo` ( `id` INT NOT NULL , `codigoventas` VARCHAR(45) NULL , `articulos_idarticulo` INT NOT NULL , `cantidad` INT NULL , `valor_unitario` VARCHAR(45) NULL , `subtotal_articulo_vendido` FLOAT NULL , `valor_de_la_venta` FLOAT NULL , `fecha_venta` DATE NULL , `hora_venta` TIME NULL , `ventasarticulocol` VARCHAR(45) NULL , `vendedor_idvendedor` INT NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_ventasarticulo_articulos_idx` (`articulos_idarticulo` ASC) , INDEX `fk_ventasarticulo_vendedor1_idx` (`vendedor_idvendedor` ASC) ,

CONSTRAINT `fk_ventasarticulo_articulos` FOREIGN KEY (`articulos_idarticulo` ) REFERENCES `mydb`.`articulos` (`idarticulo` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_ventasarticulo_vendedor1` FOREIGN KEY (`vendedor_idvendedor` ) REFERENCES `mydb`.`vendedores` (`idvendedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;

Con la siguiente instruccin cargamos a la base de datos los registros LOAD DATA INFILE 'D://U4//base_de_datos_basico//trabajo_final//compras.csv' INTO TABLE compras FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'; Luego de cargado probamos haciendo un left join con la tabla articulo probando que los datos si poseen relacin (foreign key references dentro del motor de base de datos)
SELECT a.idcompras, a.numero_de_factura_compra, a.fecha_iongreso_factura as f_i_fac, a.estado_de_pago_factura as es_pag_fac, a.cantidad_de_articulos_comprados as cant_art_comp, a.costo_unitario_art_comprado as cos_uni_art, a.subtotal_art_comprado as sub_to_com, a.valor_total_compra as val_to_comp, b.nombrearticulo FROM compras as a left join articulos as b ON articulos_idarticulo=b.idarticulo order by a.idcompras;

Al igual que la foreign key la tiene con la tabla artculos, as tambin la tiene con la tabla proveedores. LEFT JOIN DE TRES TABLAS COMPRAS ARTICULOS PROVEEDORES En el siguiente informe mostramos los nombres de los proveedores y los nombres de los artculos dentro del reporte de compras, esto es posible con la instruccin left join(CONCATENACiN) del SQL, sin embargo la instruccin de producto cartesiano tambin la lograra tambin con las respectivas restricciones en el predicado.

SELECT a.idcompras, a.numero_de_factura_compra, c.razon_social_proveedore as rsp, a.fecha_iongreso_factura as f_i_fac, a.estado_de_pago_factura as es_pag_fac, a.cantidad_de_articulos_comprados as cant, a.costo_unitario_art_comprado as c_u, a.subtotal_art_comprado as sub_to_com, a.valor_total_compra as val_to_comp, b.nombrearticulo FROM compras as a left join articulos as b ON articulos_idarticulo=b.idarticulo left join proveedores as c on a.proveedores_idproveedor=c.idproveedor order by a.idcompras;

Con la siguiente instruccin podemos observar los valores agrupados por valor total de factura
SELECT a.numero_de_factura_compra, c.razon_social_proveedore as rsp, a.cantidad_de_articulos_comprados as cant, a.costo_unitario_art_comprado as c_u,

sum(a.subtotal_art_comprado) as to_com,
b.nombrearticulo FROM compras as a left join articulos as b ON articulos_idarticulo=b.idarticulo left join proveedores as c on a.proveedores_idproveedor=c.idproveedor

group by numero_de_factura_compra

Resultando la siguiente salida :

En la siguiente consulta agrupamos los valores totales de las compras esta ves por proveedores
SELECT c.razon_social_proveedore as rsp,

sum(a.costo_unitario_art_comprado*a.cantidad_de_articulos_c omprados) as Acum_compras


FROM compras as a left join proveedores as c on a.proveedores_idproveedor=c.idproveedor

group by proveedores_idproveedor;
Esta instruccin da como resultado:

CODIGO SQL DE LA CREACION DEL MODELO EN MYSQL(GENERADO POR MYSQLWORK BENCH)


SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `mydb` ; -- ------------------------------------------------------ Table `mydb`.`articulos` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`articulos` ( `idarticulo` INT NULL , `nombrearticulo` VARCHAR(100) NULL , `cantidad_en_bodega` INT NULL , `costo` FLOAT NULL , `precio_venta_mostrador` FLOAT NULL , `precio_venta_minimo` FLOAT NULL , `estado_articulo` VARCHAR(2) NULL , `esta_en_remate` VARCHAR(2) NULL , `fecha_actualizacion` DATE NULL , `hora` TIME NULL , PRIMARY KEY (`idarticulo`) ) ENGINE = InnoDB; -- ------------------------------------------------------ Table `mydb`.`vendedores` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`vendedores` ( `idvendedor` INT NOT NULL , `nombres` VARCHAR(50) NULL , `apellidos` VARCHAR(45) NULL , `inicial` VARCHAR(45) NULL , `fecha_ingreso_empresa` DATE NULL , `fecha_cumpleao` VARCHAR(45) NULL , `telefono` VARCHAR(45) NULL , `celular` VARCHAR(45) NULL , `direccion` VARCHAR(45) NULL , PRIMARY KEY (`idvendedor`) ) ENGINE = InnoDB; -- ------------------------------------------------------ Table `mydb`.`ventasarticulo` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`ventasarticulo` ( `id` INT NOT NULL , `codigoventas` VARCHAR(45) NULL , `articulos_idarticulo` INT NOT NULL ,

`cantidad` INT NULL , `valor_unitario` VARCHAR(45) NULL , `subtotal_articulo_vendido` FLOAT NULL , `valor_de_la_venta` FLOAT NULL , `fecha_venta` DATE NULL , `hora_venta` TIME NULL , `ventasarticulocol` VARCHAR(45) NULL , `vendedor_idvendedor` INT NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_ventasarticulo_articulos_idx` (`articulos_idarticulo` ASC) , INDEX `fk_ventasarticulo_vendedor1_idx` (`vendedor_idvendedor` ASC) , CONSTRAINT `fk_ventasarticulo_articulos` FOREIGN KEY (`articulos_idarticulo` ) REFERENCES `mydb`.`articulos` (`idarticulo` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_ventasarticulo_vendedor1` FOREIGN KEY (`vendedor_idvendedor` ) REFERENCES `mydb`.`vendedores` (`idvendedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ------------------------------------------------------ Table `mydb`.`proveedores` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`proveedores` ( `idproveedor` INT NOT NULL , `razon_social_proveedore` VARCHAR(100) NULL , `direccion_proveedor` VARCHAR(50) NULL , `telefono_proveedor` VARCHAR(45) NULL , PRIMARY KEY (`idproveedor`) ) ENGINE = InnoDB; -- ------------------------------------------------------ Table `mydb`.`compras` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`compras` ( `idcompras` INT NOT NULL , `numero_de_factura_compra` VARCHAR(45) NULL , `fecha_iongreso_factura` DATE NULL , `fecha_de_vencimiento` DATE NULL , `estado_de_pago_factura` VARCHAR(45) NULL , `articulos_idarticulo` INT NOT NULL , `cantidad_de_articulos_comprados` INT NULL , `costo_unitario_art_comprado` FLOAT NULL , `subtotal_art_comprado` FLOAT NULL , `valor_total_compra` FLOAT NULL , `fecha_ingreso_a_sistema` DATE NULL , `hora_de_ingreso_a_sistema` TIME NULL , `proveedores_idproveedor` INT NOT NULL , PRIMARY KEY (`idcompras`) , INDEX `fk_compras_articulos1_idx` (`articulos_idarticulo` ASC) , INDEX `fk_compras_proveedores1_idx` (`proveedores_idproveedor` ASC) , CONSTRAINT `fk_compras_articulos1` FOREIGN KEY (`articulos_idarticulo` )

REFERENCES `mydb`.`articulos` (`idarticulo` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_compras_proveedores1` FOREIGN KEY (`proveedores_idproveedor` ) REFERENCES `mydb`.`proveedores` (`idproveedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ------------------------------------------------------ Table `mydb`.`devolucion_a_proveedores` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`devolucion_a_proveedores` ( `iddevolucion_a_proveedores` INT NOT NULL , `fecha_generacion_devolucion` DATE NULL , `hora_generacion_devolucion` TIME NULL , `cantidad_a_devolver` INT NULL , `cod_proveedor_que_recibe` INT NOT NULL , `vendedores_idvendedor` INT NOT NULL , `nombre_cliente_devolucion` VARCHAR(45) NULL , `telefono_cliente_devolucion` VARCHAR(45) NULL , PRIMARY KEY (`iddevolucion_a_proveedores`, `cod_proveedor_que_recibe`, `vendedores_idvendedor`) , INDEX `fk_devolucion_a_proveedores_proveedores1_idx` (`cod_proveedor_que_recibe` ASC) , INDEX `fk_devolucion_a_proveedores_vendedores1_idx` (`vendedores_idvendedor` ASC) , CONSTRAINT `fk_devolucion_a_proveedores_proveedores1` FOREIGN KEY (`cod_proveedor_que_recibe` ) REFERENCES `mydb`.`proveedores` (`idproveedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_devolucion_a_proveedores_vendedores1` FOREIGN KEY (`vendedores_idvendedor` ) REFERENCES `mydb`.`vendedores` (`idvendedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; USE `mydb` ; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

También podría gustarte