Sunteți pe pagina 1din 2

SOLUCIN

CREATE DATABASE HOSPITAL;



USE HOSPITAL;

--CREACIN DE LA ESTRUCTURA DE LA BASE DE DATOS

CREATE TABLE DOCTOR (DOC_ID INT, NOMBRE VARCHAR(60), EDAD INT CONSTRAINT
DOC_PK PRIMARY KEY (DOC_ID));

CREATE TABLE DROGA (DROGA_ID INT, TIPO VARCHAR(30), PRECIO FLOAT, NOMBRE
VARCHAR(40) CONSTRAINT DRO_PK PRIMARY KEY(DROGA_ID));

CREATE TABLE VISITA (VISITA_ID INT, DOC_ID INT, FECHA DATE CONSTRAINT
VIS_PK PRIMARY KEY (VISITA_ID) CONSTRAINT VIS_FK FOREIGN KEY (DOC_ID)
REFERENCES DOCTOR (DOC_ID));

CREATE TABLE PRESCRIPCION (VISITA_ID INT, DROGA_ID INT CONSTRAINT PRE_PK
PRIMARY KEY (VISITA_ID, DROGA_ID) CONSTRAINT PRE_FK FOREIGN KEY
(VISITA_ID) REFERENCES VISITA(VISITA_ID) );
ALTER TABLE PRESCRIPCION ADD CONSTRAINT PRE_FK2 FOREIGN KEY (DROGA_ID)
REFERENCES DROGA(DROGA_ID);

-----------------------------------------------------
---------- CARGA DE LA BASE DE DATOS-----------------
-----------------------------------------------------

--TABLA DOCTOR
INSERT INTO DOCTOR VALUES (1,'Marcelo Holgun',45);
INSERT INTO DOCTOR VALUES (2,'Peter Zurita',56);
INSERT INTO DOCTOR VALUES (3,'Claudia Vela',45);
INSERT INTO DOCTOR VALUES (4,'Paola Arias',31);
INSERT INTO DOCTOR VALUES (5,'Edison Morales',63);

---TABLA DROGA
INSERT INTO DROGA VALUES (1,'analgesico',23,'adorlan');
INSERT INTO DROGA VALUES (2,'vitamina',7,'complejo B');
INSERT INTO DROGA VALUES (3,'corticoide',6,'inflacor');
INSERT INTO DROGA VALUES (4,'vitamina',34,'jazmin E');
INSERT INTO DROGA VALUES (5,'analgesico',12,'tramadol');
INSERT INTO DROGA VALUES (6,'antibitico',23,'relmex');
INSERT INTO DROGA VALUES (7,'antibitico',45,'ciplox');


--TABLA VISITA
INSERT INTO VISITA VALUES (1,1,'2011-12-05');
INSERT INTO VISITA VALUES (2,1,'2011-03-17');
INSERT INTO VISITA VALUES (3,2,'2012-01-03');
INSERT INTO VISITA VALUES (4,3,'2011-09-23');
INSERT INTO VISITA VALUES (5,1,'2011-07-01');
INSERT INTO VISITA VALUES (6,2,'2012-01-12');


---TABLA PRESCRIPCIN
INSERT INTO PRESCRIPCION VALUES (1,1);
INSERT INTO PRESCRIPCION VALUES (2,1);
INSERT INTO PRESCRIPCION VALUES (2,4);
INSERT INTO PRESCRIPCION VALUES (3,1);
INSERT INTO PRESCRIPCION VALUES (4,2);
INSERT INTO PRESCRIPCION VALUES (5,1);
INSERT INTO PRESCRIPCION VALUES (5,4);
INSERT INTO PRESCRIPCION VALUES (5,5);
INSERT INTO PRESCRIPCION VALUES (6,3);

-----------------------------------------------------------------------
---------------------------------CONSULTAS-----------------------------
-----------------------------------------------------------------------
--a) Listado de doctores en cuyo nombre existe la letra a como ltima
letra.
SELECT * FROM DOCTOR WHERE DOCTOR.NOMBRE LIKE '%a';

--b) Lista de las fechas de visitas realizadas por el doctor Peter
Zurita.
SELECT VISITA.FECHA FROM VISITA INNER JOIN DOCTOR ON VISITA.DOC_ID=
DOCTOR.DOC_ID WHERE DOCTOR.NOMBRE LIKE 'PETER ZURITA';

--c) Lista del nombre y tipo de drogas cuyo precio supera los 8 dlares
y en cuyo nombre aparece una letra a
SELECT DROGA.NOMBRE, DROGA.TIPO FROM DROGA WHERE PRECIO >8 AND
DROGA.NOMBRE LIKE '%a%';

--d) Precio promedio de las drogas almacenadas en la base de datos
SELECT AVG(DROGA.PRECIO) FROM DROGA;

--e) Lista del nombre y edad de los doctores cuya edad menor o igual a
la mitad de la edad mxima registrada en la base de datos.
SELECT DOCTOR.NOMBRE, DOCTOR.EDAD FROM DOCTOR WHERE DOCTOR.EDAD
<=((SELECT MAX(DOCTOR.EDAD) FROM DOCTOR)/2)

--f) Lista de los nombres y precios de drogas y fecha en la que fueron
recetadas por el doctor Marcelo Holgun en sus visitas.
SELECT DROGA.NOMBRE, DROGA.PRECIO, VISITA.FECHA FROM DROGA INNER JOIN
PRESCRIPCION ON DROGA.DROGA_ID=PRESCRIPCION.DROGA_ID INNER JOIN VISITA ON
PRESCRIPCION.DROGA_ID=VISITA.VISITA_ID INNER JOIN DOCTOR ON
VISITA.DOC_ID=DOCTOR.DOC_ID WHERE DOCTOR.NOMBRE LIKE 'Marcelo Holgun';

--g) Actualice la edad de los doctores disminuyendo 3 aos a aquellos
doctores cuya edad sea superior al promedio.
UPDATE DOCTOR SET DOCTOR.EDAD=DOCTOR.EDAD-3 WHERE DOCTOR.EDAD >(SELECT
AVG(DOCTOR.EDAD) FROM DOCTOR);


--h) Actualice la fecha de visita a 2012-01-01 de aquellas visitas
realizadas por un doctor que tiene dos letras a en su nombre.
UPDATE VISITA SET VISITA.FECHA='2012-01-01' FROM VISITA INNER JOIN DOCTOR
ON VISITA.DOC_ID=DOCTOR.DOC_ID WHERE DOCTOR.NOMBRE LIKE '%a%a';

--i) Elimine de la base de datos las drogas cuyo precio dividido entre 3
sea superior al promedio de precios.
DELETE FROM DROGA WHERE (DROGA.PRECIO/3)>(SELECT AVG(DROGA.PRECIO)FROM
DROGA);

S-ar putea să vă placă și