Está en la página 1de 22

ENERO - 2009

CURSO BASE DE DATOS

PRCTICA SQL

PRACTICA I - SQL
Prctica I - SQL

Curso Base de Datos


Pgina 1

Tabla de categoras
Los artculos los asociaremos a categoras.

CREATE TABLE TCATEGORIA ( CODIGO_CAT NUMBER(3), NOMBRE_CAT VARCHAR2(20) NOT NULL, CONSTRAINT PK_TCATEGORIA_CODIGO_CAT PRIMARY KEY(CODIGO_CAT), CONSTRAINT UK_TCATEGORIA_NOMBRE_CAT UNIQUE (NOMBRE_CAT) );

Clave primaria: Clave nica: Secuencia:

CODIGO_CAT NOMBRE_CAT CODIGO_CAT

(PK_TCATEGORIA_CODIGO_CAT) (UK_TCATEGORIA_NOMBRE_CAT)

La columna CODIGO_CAT, la daremos valor a partir de una secuencia que comenzar a partir del valor 101.
CREATE SEQUENCE CODIGO_CAT START WITH 101 INCREMENT BY 1;

Prctica I - SQL

Pgina 2

Datos ejemplo:

INSERT INTO TCATEGORIA VALUES (CODIGO_CAT.NEXTVAL, 'MONITORES'); INSERT INTO TCATEGORIA VALUES (CODIGO_CAT.NEXTVAL, 'ORDENADORES'); INSERT INTO TCATEGORIA VALUES (CODIGO_CAT.NEXTVAL, 'PORTATIL'); INSERT INTO TCATEGORIA VALUES (CODIGO_CAT.NEXTVAL, 'IMAGEN'); INSERT INTO TCATEGORIA VALUES (CODIGO_CAT.NEXTVAL, 'SONIDO');

Prctica I - SQL

Pgina 3

Tabla de Artculos
Datos de los artculos.
CREATE TABLE TARTICULO ( CODIGO_ART VARCHAR2(13), NOMBRE_ART VARCHAR2(20), DESCRI_ART VARCHAR2(100), PRECIO_VENTA_ART NUMBER(10,2), STOCK_ART NUMBER(8) DEFAULT 0, PESO_ART NUMBER(8,2), CODIGO_CAT_ART NUMBER(3), CONSTRAINT PK_TARTICULO_CODIGO_ART PRIMARY KEY(CODIGO_ART), CONSTRAINT FK_TARTICULO_CODIGO_CAT_ART FOREIGN KEY (CODIGO_CAT_ART) REFERENCES TCATEGORIA(CODIGO_CAT));

Clave primaria: Clave fornea:

CODIGO_ART CODIGO_CAT_ART

(PK_TARTICULO_CODIGO_ART) TCATEGORIA<->CODIGO_CAT

(FK_TARTICULO_CODIGO_CAT_ART) ndice: NOMBRE_ART (IND_NOMBRE_ART)

CREATE INDEX IND_NOMBRE_ART ON TARTICULO (NOMBRE_ART);

ndice:

CODIGO_CAT_ART

(IND_CODIGO_CAT_ART)

CREATE INDEX IND_CODIGO_CAT_ART ON TARTICULO (CODIGO_CAT_ART);

Valor inicial:

STOCK_ART

Prctica I - SQL

Pgina 4

Datos ejemplo:

INSERT INTO TARTICULO VALUES ( 'S-710-MP','MONITOR LCD 17','LCD SAMSUNG 17 - CONEX-TV,PLATA' ,'220','5','0,800',101); INSERT INTO TARTICULO VALUES ( 'S-910-MP','MONITOR LCD 19','LCD SAMSUNG 19 - CONEX-TV,PLATA' ,'320','3','0,900',101); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'HP-PAV-1789','HP MEDIA CENTER PC','AMD-64 ATHOLONX2 - 2GB DRAM - 400 GB DISCO DURO- 9 EN 1 LECTOR - DVD LIGHSCRIBE' ,'620',102); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'F3SV-AP224C' ,'PORTATIL ASUS VHP','Procesador Core 2 Duo Memoria RAM 2.048 MB Disco Duro 250GB CD/DVD DVDRW Pantalla 15.4 Bluetooth','920',103); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'PQG40E-01F01' ,'TOSHIBA QOSMIO','T7500 Procesador Core 2 Duo Memoria RAM 3GB Disco Duro 400GB DVDRW-RAM / HD DVD-R Pantalla 17 ','2100',103); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'SO-TV32P3000E' ,'TV LCD 32 PULGADAS','TV LCD Sony Bravia P3000 HD Ready 32 pulg., Bra','651,99',104); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'SO-TV40V3000A' ,'TV LCD 40 PULGADAS','Pulgadas 40 Formato 16:9 Contraste 1800:1 Brillo 500 Potencia Audio Total 20vatios Angulo (H/V)','1340,99',104); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'PCS8470F' ,'TV LCD PANASONIC 32','PANASONIC TX-32LMD70F Tevisin LCD-TFT 32" 16:9 2HDMI con TDT V-Real II y los nuevos paneles IPS ','834,37',104); INSERT INTO TARTICULO ( CODIGO_ART , NOMBRE_ART, DESCRI_ART , PRECIO_VENTA_ART , CODIGO_CAT_ART ) VALUES( 'GS-TV19LS4R','LGL193ST','Pulgadas 19 Formato 16:9 Contraste 3000:1 Brillo 300 Potencia Audio Total 6vatios Angulo(H/V)','323,09',104);

Prctica I - SQL

Pgina 5

Vista:

Articulo-Categora

( VART_CAT )

Consulta con las columnas de la tabla de artculos y la tabla de categoras.

CREATE VIEW VART_CAT AS SELECT CODIGO_ART , NOMBRE_ART , DESCRI_ART, PRECIO_VENTA_ART, STOCK_ART , PESO_ART , NOMBRE_CAT CATEGORIA FROM TARTICULO INNER JOIN TCATEGORIA ON CODIGO_CAT_ART = CODIGO_CAT ;

SELECT CODIGO_ART "REF.", NOMBRE_ART ARTICULO, CATEGORIA FROM VART_CAT ORDER BY CATEGORIA;

Vista:

Articulo-Stock

( VART_STOCK )

Consulta con las columnas de la tabla de artculos, de aquellos artculos que tienen existencias.

CREATE VIEW VART_STOCK AS SELECT CODIGO_ART , NOMBRE_ART , DESCRI_ART, PRECIO_VENTA_ART, STOCK_ART , PESO_ART , CODIGO_CAT_ART FROM TARTICULO WHERE STOCK_ART <> 0;

SELECT CODIGO_ART "REF.", NOMBRE_ART ARTICULO , STOCK_ART STOCK FROM VART_STOCK;

Prctica I - SQL

Pgina 6

Tabla de Proveedores
Datos de los proveedores.
CREATE TABLE TPROVEEDORES ( CIF_PR VARCHAR2(15), COD_PR CHAR(3), NOMBRE_PR VARCHAR2(30), DIR_PR VARCHAR2(40), POBLACION_PR VARCHAR2(40), PROVINCIA_PR VARCHAR2(30), PAIS_PR VARCHAR2(30) DEFAULT 'ESPAA', CP_PR VARCHAR2(15), TLF1_PR VARCHAR2(15), TLF2_PR VARCHAR2(15), FAX_PR VARCHAR2(15), PERSONA_PR VARCHAR2(15), OBSER_PR VARCHAR2(250), CONSTRAINT PK_TPROVEEDORES_CIF_PR PRIMARY KEY(CIF_PR), CONSTRAINT UK_TPROVEEDORES_COD_PR UNIQUE (COD_PR));

Prctica I - SQL

Pgina 7

Clave primaria: Clave nica: ndice:

CIF_PR COD_PR NOMBRE_PR

(PK_TPROVEEDORES_CIF_PR) (UK_TPROVEEDORES_COD_PR) (IND_NOMBRE_PR)

CREATE INDEX IND_NOMBRE_PR ON TPROVEEDORES (NOMBRE_PR);

Valor inicial:

PAIS_PR

ESPAA

Datos ejemplo:

INSERT INTO TPROVEEDORES VALUES ( 'B-38106100','SOT', 'SOTESA S.L.', 'Av. Madrid n 11, local 1', 'Santa Cruz de Tenerife', 'Santa Cruz de Tenerife','ESPAA','38007','(34)922 280 170',NULL,'(34)922 247 715','ANA GARCIA', 'Proveedor para nuestros clientes de las islas Canarias'); INSERT INTO TPROVEEDORES VALUES ( 'B-67806198','SON', 'SONY', 'C/ JUAN BARDEM n 11, 1-A', 'Getafe', 'Madrid', 'ESPAA', '28901','(34)91 6789876','(34)91 6789876',NULL,'LUIS GARCIA','PSP,PLAY,TV,DVD,CINE'); INSERT INTO TPROVEEDORES VALUES ( 'B-987061338','PAN', 'PANASONIC', 'C/ LEGANITOS', 'MADRID', 'Madrid', 'ESPAA', '28020','(34)91 5550087','(34)91 5550088','(34)91 5550089','MARTA VALERA', 'Especialistas en imagen'); INSERT INTO TPROVEEDORES VALUES ( 'C-987678876','PCC', 'PC CYTY', 'C. C. PARQUESUR', 'LEGANES', 'Madrid', 'ESPAA', '28906','(34)91 9992343','(34)91 3430066','(34)91 3430099','PEDRO CUESTA','ORDENADORES,PORTATILES,IMAGEN, SONIDO'); INSERT INTO TPROVEEDORES VALUES ( 'A-122178844','ASU', 'ASUS PORTATILES', 'CAMINO DE PINTO S/N', 'LEGANES', 'Madrid', 'ESPAA', '28906','(34)91 1626723', '(34)91 234232',NULL,'LUCIA' , NULL); INSERT INTO TPROVEEDORES VALUES ( 'A-333178844','AIR', 'AIRIS', 'Pol. Ind. Cabanillas II, S/N' ,'CABANILLAS DEL CAMPO', 'GUADALAJARA', 'ESPAA', '19171','(34)949 201 619', '(34)949 201 618','(34)949 201 618',NULL , NULL);

Prctica I - SQL

Pgina 8

Tabla de Proveedores y Artculos


Indica el/los proveedor/es que suministra/n un determinado artculo, y a qu precio se distribuye.

CREATE TABLE TPRO_ART ( CODIGO_ART_PA VARCHAR2(13), CIF_PR_PA VARCHAR2(15), REF_PA VARCHAR2(15), PRECIO_COMP_PA NUMBER(10,2), CONSTRAINT PK_TPRO_ART_COD_ART_CIF_PR PRIMARY KEY (CODIGO_ART_PA,CIF_PR_PA), CONSTRAINT FK_TPRO_ART_CODIGO_ART_PA FOREIGN KEY (CODIGO_ART_PA) REFERENCES TARTICULO(CODIGO_ART), CONSTRAINT FK_TPRO_ART_CIF_PR_PA FOREIGN KEY (CIF_PR_PA) REFERENCES TPROVEEDORES(CIF_PR));

Prctica I - SQL

Pgina 9

Clave primaria:

CODIGO_ART_PA CIF_PR_PA (PK_TPRO_ART_COD_ART_CIF_PR)

Clave fornea:

CODIGO_ART_PA

TARTICULO<->CODIGO_ART

(FK_TPRO_ART_CODIGO_ART_PA)

Clave fornea:

CIF_PR_PA

TPROVEEDORES<->CIF_PR

(FK_TPRO_ART_CIF_PR_PA)

ndice:

CODIGO_ART_PA

(IND_CODIGO_ART_PA)

CREATE INDEX IND_CODIGO_ART_PA ON TPRO_ART (CODIGO_ART_PA);

ndice:

CIF_PR_PA

(IND_CIF_PR_PA)

CREATE INDEX IND_CIF_PR_PA ON TPRO_ART (CIF_PR_PA);

ndice:

PRECIO_COMP_PA

(IND_PRECIO_COMP_PA)

CREATE INDEX IND_PRECIO_COMP_PA ON TPRO_ART (PRECIO_COMP_PA);

Prctica I - SQL

Pgina 10

Datos ejemplo:

INSERT INTO TPRO_ART VALUES ('F3SV-AP224C', 'C-987678876','000-ASUS-0001', '844,49'); INSERT INTO TPRO_ART VALUES ( 'F3SV-AP224C','A-122178844',NULL, '830,00'); INSERT INTO TPRO_ART VALUES ( 'F3SV-AP224C', 'B-38106100',NULL, '850,20'); INSERT INTO TPRO_ART VALUES ('PQG40E-01F01' , 'C-987678876','008-TOSH-0231', '1900,99'); INSERT INTO TPRO_ART VALUES ('S-710-MP' , 'B-987061338',NULL, 200); INSERT INTO TPRO_ART VALUES ('S-710-MP' , 'C-987678876',NULL, 220); INSERT INTO TPRO_ART VALUES ('S-910-MP' , 'B-987061338',NULL, 310); INSERT INTO TPRO_ART VALUES ('HP-PAV-1789' , 'C-987678876','008-HP-0301', '580,66'); INSERT INTO TPRO_ART VALUES ('SO-TV32P3000E' , 'C-987678876','009-SONY-0371', '610,99'); INSERT INTO TPRO_ART VALUES ('SO-TV32P3000E' , 'B-67806198',NULL, '590,00'); INSERT INTO TPRO_ART VALUES ('SO-TV40V3000A' , 'B-67806198',NULL, '1250,00');

Prctica I - SQL

Pgina 11

Vista:

Proveedores-Articulos

( VPRO_ART )

Consulta con las columnas de la tabla de proveedores y de artculos, con los artculos que son suministrados por uno o varios proveedores y a qu precio lo distribuyen.

CREATE OR REPLACE VIEW VPRO_ART AS SELECT CIF_PR, NOMBRE_PR , CODIGO_ART , NOMBRE_ART , PRECIO_COMP_PA FROM TPROVEEDORES INNER JOIN TPRO_ART ON CIF_PR = CIF_PR_PA INNER JOIN TARTICULO ON CODIGO_ART_PA = CODIGO_ART;

SELECT * FROM VPRO_ART ORDER BY CODIGO_ART ;

Prctica I - SQL

Pgina 12

Tabla de Pedidos Compra


Datos sobre los pedidos de compra a los proveedores.

CREATE TABLE TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC VARCHAR2(9) NOT NULL, CIF_PC VARCHAR2(15) NOT NULL, FECHA_PEDIDO_PC DATE DEFAULT SYSDATE, FECHA_ENTRADA_PC DATE DEFAULT SYSDATE+3, FORMA_PAGO_PC VARCHAR2(10), COMERCIAL_PC VARCHAR2(20), PORTES_PC NUMBER(7, 2) DEFAULT 0, OBSERVACIONES_PC VARCHAR2(80), CONSTRAINT PK_NUMERO_PEDIDO_PC PRIMARY KEY( NUMERO_PEDIDO_PC ), CONSTRAINT FK_CIF_PC FOREIGN KEY(CIF_PC ) REFERENCES TPROVEEDORES(CIF_PR), CONSTRAINT CK_FORMA_PAGO_PC CHECK (FORMA_PAGO_PC ='90' OR FORMA_PAGO_PC = '60' OR FORMA_PAGO_PC = '30' OR FORMA_PAGO_PC = 'CONTADO') );

Prctica I - SQL

Pgina 13

Clave primaria:

NUMERO_PEDIDO_PC

(PK_NUMERO_PEDIDO_PC)

Clave fornea:

CIF_PC

TPROVEEDORES<->CIF_PR (FK_ CIF_PC)

ndice:

CIF_PC

(IND_CIF_PC)

CREATE INDEX IND_CIF_PC ON TPEDIDOS_COMPRA (CIF_PC);

ndice:

FECHA_PEDIDO_PC

(IND_ FECHA_PEDIDO_PC)

CREATE INDEX IND_FECHA_PEDIDO_PC ON TPEDIDOS_COMPRA (FECHA_PEDIDO_PC);

Valor inicial:

PORTES_PC

Valor inicial:

FECHA_PEDIDO_PC

SYSDATE

Valor inicial:

FECHA_ENTRADA_PC

SYSDATE + 3

Condicin:

FORMA_PAGO_PC Valores posibles

(CK_FORMA_PAGO_PC ) 30,60,90,CONTADO

Secuencia:

NUMERO_PEDIDO_PC

La columna NUMERO_PEDIDO_PC, la daremos valor a partir de una secuencia que comenzar a partir del valor 101. El valor estar compuesto por texto y la secuencia, siendo sta ltima responsable de los 6 dgitos finales PC -000101.
CREATE SEQUENCE NUMERO_PEDIDO_PC START WITH 101 INCREMENT BY 1;

Prctica I - SQL

Pgina 14

Datos ejemplo:

INSERT INTO TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC ,CIF_PC , FORMA_PAGO_PC ,COMERCIAL_PC ,PORTES_PC ,OBSERVACIONES_PC ) VALUES ( 'PC-'||TRIM(' ' FROM TO_CHAR(NUMERO_PEDIDO_PC.NEXTVAL, '000000')) , 'C-987678876', '90', NULL, 0, NULL );

INSERT INTO TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC ,CIF_PC , FORMA_PAGO_PC , COMERCIAL_PC ,PORTES_PC ,OBSERVACIONES_PC ) VALUES ( 'PC-'||TRIM(' ' FROM TO_CHAR(NUMERO_PEDIDO_PC.NEXTVAL, '000000')) ,'A-122178844' ,'90', 'LUCIA', '8,50', 'ENTREGA EN LAS OFICINAS' );

INSERT INTO TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC ,CIF_PC , FORMA_PAGO_PC ,COMERCIAL_PC ,PORTES_PC ,OBSERVACIONES_PC ) VALUES ( 'PC-'||TRIM(' ' FROM TO_CHAR(NUMERO_PEDIDO_PC.NEXTVAL,'000000')), 'B-67806198', '30', 'LUIS GARCIA' , '2,50' , 'MATERIAL FRAGIL');

INSERT INTO TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC ,CIF_PC , FORMA_PAGO_PC ,COMERCIAL_PC , PORTES_PC , OBSERVACIONES_PC, FECHA_PEDIDO_PC , FECHA_ENTRADA_PC ) VALUES ( 'PC-' || TRIM (' ' FROM TO_CHAR (NUMERO_PEDIDO_PC.NEXTVAL , '000000') ), 'C-987678876' , '90', NULL , '0' , NULL , SYSDATE + 1,SYSDATE + 4);

INSERT INTO TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC ,CIF_PC , FORMA_PAGO_PC ,COMERCIAL_PC , PORTES_PC , OBSERVACIONES_PC, FECHA_PEDIDO_PC , FECHA_ENTRADA_PC ) VALUES ( 'PC-' || TRIM (' ' FROM TO_CHAR (NUMERO_PEDIDO_PC.NEXTVAL , '000000') ), 'A-122178844', '90', 'LUCIA' , '3' , NULL , SYSDATE + 2,SYSDATE + 5);

INSERT INTO TPEDIDOS_COMPRA ( NUMERO_PEDIDO_PC ,CIF_PC , FORMA_PAGO_PC ,COMERCIAL_PC , PORTES_PC , OBSERVACIONES_PC, FECHA_PEDIDO_PC , FECHA_ENTRADA_PC ) VALUES ( 'PC-' || TRIM (' ' FROM TO_CHAR (NUMERO_PEDIDO_PC.NEXTVAL , '000000') ), 'C-987678876', '90', NULL , '0' , NULL , SYSDATE + 2,SYSDATE + 5);

Prctica I - SQL

Pgina 15

Tabla de Detalles de Pedidos Compra


Datos sobre los detalles de pedidos de compra a los proveedores, se especifican los artculos pedidos, el precio y las unidades pedidas. sta tabla es dependiente de la tabla pedidos compra.

CREATE TABLE TDETALLES_COMPRA ( NUMERO_PEDIDO_DC VARCHAR2(9) NOT NULL, CODIGO_ARTICULO_DC VARCHAR2(13) NOT NULL, CANT_DC NUMBER(10) NOT NULL, PRECIO_DC NUMBER(10, 2) NOT NULL, CONSTRAINT FK_NUMERO_PEDIDO_DC FOREIGN KEY (NUMERO_PEDIDO_DC ) REFERENCES TPEDIDOS_COMPRA (NUMERO_PEDIDO_PC ), CONSTRAINT FK_CODIGO_ARTICULO_DC FOREIGN KEY (CODIGO_ARTICULO_DC ) REFERENCES TARTICULO (CODIGO_ART), CONSTRAINT CK_CANT_DC ); CHECK (CANT_DC > 0)

Prctica I - SQL

Pgina 16

Clave fornea:

NUMERO_PEDIDO_DC

TPEDIDOS_COMPRA <-> NUMERO_PEDIDO_PC (FK_ NUMERO_PEDIDO_DC )

Clave fornea:

CODIGO_ART_DC TARTICULO <-> CODIGO_ART

(FK_CODIGO_ARTICULO_DC )

ndice:

NUMERO_PEDIDO_DC
CREATE INDEX IND_NUMERO_PEDIDO_DC

(IND_ NUMERO_PEDIDO_DC )
ON TDETALLES_COMPRA (NUMERO_PEDIDO_DC );

ndice:

CODIGO_ARTICULO_DC
CREATE INDEX IND_CODIGO_ARTICULO_DC

(IND_CODIGO_ARTICULO_DC)
ON TDETALLES_COMPRA (CODIGO_ARTICULO_DC );

Valor inicial:

CANT_DC

NOT NULL

Valor inicial:

PRECIO_DC

NOT NULL

Condicin:

CANT_DC Valores posibles

(CK_ CANT_DC ) > 0

Prctica I - SQL

Pgina 17

Datos ejemplo:

INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000101','HP-PAV-1789',2,'580,66'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000101','PQG40E-01F01',3,'1900'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000101','SO-TV32P3000E',1,'610,99'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000101','S-710-MP',5,'190');

INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000102','F3SV-AP224C',6,'830');

INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000103','SO-TV32P3000E',8,'590'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000103','SO-TV40V3000A',4,'1250');

INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000104','HP-PAV-1789',4,'580,66'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000104','SO-TV32P3000E',2,'610,99'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000104','S-710-MP',10,'170');

INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000105','F3SV-AP224C',8,'820');

INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000106','PQG40E-01F01',1,'1900'); INSERT INTO TDETALLES_COMPRA VALUES( 'PC-000106','S-710-MP',10,'170');

Prctica I - SQL

Pgina 18

Campos comunes en las Tablas


Esquema de las columnas comunes, claves forneas y columnas referenciadas.

TCATEGORIA
CODIGO_CAT

TPRO_ART TARTICULO
CODIGO_ART CODIGO_CAT CIF_PR_PA CODIGO_ART_PA

TPROVEDORES
CIF_PR

TPEDIDOS_COMPRA TDETALLES_COMPRA
NUMERO_PEDIDO_DC CODIGO_ART_DC NUMERO_PEDIDO_PC CIF_PC

Prctica I - SQL

Pgina 19

Vistas de las Tablas anteriores


Diferentes vistas, trabajando con todos los datos anteriores.
SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT * * * * * * * * * FROM FROM FROM FROM FROM FROM FROM FROM FROM TCATEGORIA ; TARTICULO ; VART_CAT ; VART_STOCK ; TPROVEEDORES ; TPRO_ART ; VPRO_ART ; TPEDIDOS_COMPRA ; TDETALLES_COMPRA ;

Vista:

Importe - Detalles compra

( VIMPORTE_DET )

Consulta con las columnas de la tabla de detalles pedidos y clculo de la columna IMPORTE_DC que la obtendremos a partir ( CANT_DC * PRECIO_DC ).

CREATE OR REPLACE VIEW VIMPORTE_DET AS SELECT NUMERO_PEDIDO_DC , CODIGO_ARTICULO_DC , CANT_DC , PRECIO_DC , CANT_DC * PRECIO_DC IMPORTE_DC FROM TDETALLES_COMPRA ORDER BY NUMERO_PEDIDO_DC ;

SELECT * FROM VIMPORTE_DET ;

Prctica I - SQL

Pgina 20

Vista:

Pedidos compra Vista Importe Detalles

( VPED_COM_DET )

Consulta con las columnas de la tabla de pedidos y aquellos artculos pedidos.

CREATE OR REPLACE VIEW VPED_COM_DET AS SELECT NUMERO_PEDIDO_PC , CIF_PC , FECHA_PEDIDO_PC , FECHA_ENTRADA_PC , FORMA_PAGO_PC , COMERCIAL_PC , PORTES_PC , OBSERVACIONES_PC , CODIGO_ARTICULO_DC , CANT_DC , PRECIO_DC , IMPORTE_DC FROM TPEDIDOS_COMPRA INNER JOIN VIMPORTE_DET ON NUMERO_PEDIDO_PC = NUMERO_PEDIDO_DC ;

SELECT * FROM VPED_COM_DET ;

Vista:

Total Pedidos compra ( VTOT_PEDIDO )

Consulta con las columnas de la vista de pedidos y del importe de los artculos pedidos (VPED_COM_DET), sumando los importes por pedido y calculando la base imponible del importe(suma de importes + portes pedidos) .
CREATE OR REPLACE VIEW VTOT_PEDIDO AS SELECT NUMERO_PEDIDO_PC NUMERO_PEDIDO , CIF_PC CIF, FECHA_PEDIDO_PC FECHA, SUM(IMPORTE_DC) IMPORTE, MAX(NVL(PORTES_PC,0)) PORTES , SUM(IMPORTE_DC)+ MAX(NVL(PORTES_PC,0)) BASE_IMPONIBLE FROM VPED_COM_DET GROUP BY NUMERO_PEDIDO_PC , CIF_PC , FECHA_PEDIDO_PC ORDER BY NUMERO_PEDIDO_PC ;

SELECT * FROM VTOT_PEDIDO ;

Prctica I - SQL

Pgina 21

Vista:

Total Pedidos compra Iva

( VTOT_PEDIDO_IVA )

Consulta con las columnas de la vista total de pedidos (VTOT_PEDIDO), calculando el IVA (BASE_IMPONIBLE * 0.16 ) y el total pedido incluido IVA (BASE_IMPONIBLE * 1.16). Tambin incluiremos la columna que describe el nombre de la empresa del proveedor (NOMBRE_PR).

CREATE OR REPLACE VIEW VTOT_PEDIDO_IVA AS SELECT NUMERO_PEDIDO, CIF , NOMBRE_PR EMPRESA, FECHA , BASE_IMPONIBLE , BASE_IMPONIBLE * 0.16 "IVA 16%" ,BASE_IMPONIBLE * 1.16 "TOTAL PEDIDO" FROM VTOT_PEDIDO INNER JOIN TPROVEEDORES ON CIF = CIF_PR ORDER BY NUMERO_PEDIDO;

SELECT * FROM VTOT_PEDIDO_IVA ;

SELECT EMPRESA,COUNT(NUMERO_PEDIDO) PEDIDOS , SUM ( "TOTAL PEDIDO" ) "TOTAL COMPRAS" FROM VTOT_PEDIDO_IVA GROUP BY EMPRESA ;

SELECT TO_CHAR(FECHA,'DD-MM-YY') DIA, COUNT(NUMERO_PEDIDO) PEDIDOS , SUM ( "TOTAL PEDIDO" ) "TOTAL COMPRAS" FROM VTOT_PEDIDO_IVA GROUP BY TO_CHAR(FECHA,'DD-MM-YY') ORDER BY DIA;

Prctica I - SQL

Pgina 22

También podría gustarte