plsql

8
PLSQL Integrantes: Febe Moena Elizabeth Morales Andrea Uribe Profesor: Cristian Salazar Ayudante: José Luis Carrasco Curso: ADMI 273 Valdivia 30 de Abril, 2012

Upload: elizabeth-a

Post on 29-May-2015

515 views

Category:

Technology


2 download

DESCRIPTION

Tarea de PLSQL de ayudantía

TRANSCRIPT

Page 1: Plsql

PLSQL

Integrantes: Febe Moena Elizabeth Morales Andrea Uribe Profesor: Cristian Salazar Ayudante: José Luis Carrasco Curso: ADMI 273

Valdivia 30 de Abril, 2012

Page 2: Plsql

Supuestos: La base de datos no guarda el histórico de los préstamos realizados, es decir, que

al entregar un libro, ese préstamo se elimina de la tabla PRESTAMO.

1.- Realice las siguientes vistas:

a) Que entregue los estudiantes que son de Ing. Comercial (NOMBRES y APELLIDOS del estudiante, NOMBRE de la carrera y NOMBRE del campus).

Select e.nombres, apellidos,c.nombre CARRERA, cs.nombre CAMPUS from estudiantes e, carreras c, campus cs where e.id_carrera=c.id_carrera and c.id_campus=cs.id_campus and c.nombre='Comercial'

b) Que entregue los estudiantes que son de Auditoria (NOMBRES y APELLIDOS del estudiante, NOMBRE de la carrera y NOMBRE del campus). Select e.nombres, apellidos,c.nombre CARRERA, cs.nombre CAMPUS from estudiantes e, carreras c, campus cs where e.id_carrera=c.id_carrera and c.id_campus=cs.id_campus and c.nombre='Auditoria'

c) Que entregue los estudiantes que se atrasaron en la entrega de los libros (RUT, NOMBRES, APELLIDOS y FONO).

Select e.rut_est RUT, nombres, apellidos, fono from estudiantes e, prestamo p where e.rut_est=p.rut_est and fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual)

Page 3: Plsql

d) La cantidad de libros prestados.

Select count(cod_libro) LIBROS_PRESTADOS from préstamo

e) Los libros de editoriales extranjeras (CODIGO,TITULO , AÑO y PAIS de ORIGEN).

Select l.cod_libro, l.titulo, l.agno AÑO, e.pais from editoriales e, libros l where e.id_edit=l.id_edit and e.pais<> 'Chile'

f) Los libros que son de reserva (CODIGO, TITULO y AÑO del LIBRO, NOMBRE de la biblioteca, el NOMBRE y APELLIDO del autor, el NOMBRE de la editorial y el PAIS).

Select cod_libro,titulo, agno AÑO, biblioteca, a.nombres NOMBRES_AUTOR, a.apellidos APELLIDOS_AUTOR, e.nombre NOMBRE_EDITORIAL, pais from libros l, biblioteca b, autores a,editoriales e where b.id_biblio=l.id_biblio and a.rut_autor=l.rut_autor and l.id_edit=e.id_edit and id_tipo=1

Page 4: Plsql

2.- Se requiere obtener datos desde la Base de Datos y almacenarlos de forma permanente (Vista). Se solicita:

a) Los estudiantes del campus Isla Teja, que tienen libros en su poder (atrasados o no).

create or replace view dosa as Select e.nombres, e.apellidos from estudiantes e, carreras c, prestamo p where e.id_carrera=c.id_carrera and e.rut_est=p.rut_est and id_campus= 3 and fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);

Select * from dosa;

b) Se debe entregar el RUT, NOMBRE y APELLIDOS del estudiante, además del NOMBRE de la carrera a la cual pertenece.

create or replace view dosB as Select e.rut_est, e.nombres NOMBRES, e.apellidos APELLIDOS, c.nombre CARRERA from estudiantes e, carreras c, prestamo p where e.id_carrera=c.id_carrera and e.rut_est=p.rut_est and id_campus= 2 and fecha_e > (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);

Select * from dosB;

Page 5: Plsql

c) Además se debe entregar que libro tiene prestado, indicando CODIGO, TITULO y AÑO, el NOMBRE y APELLIDO del autor, la EDITORIAL y su PAIS, indicar en qué biblioteca se encuentra, y de qué tipo es.

create or replace view dosc as Select l.cod_libro,l.titulo, l.agno AÑO,a.nombres,a.apellidos, ed.nombre EDITORIAL, ed.pais PAIS,b.biblioteca BIBLIOTECA, tipo_p TIPO from libros l, editoriales ed, tipo t,biblioteca b, autores a,prestamo p,estudiantes e, carreras c, campus cs where p.cod_libro=l.cod_libro and l.rut_autor=a.rut_autor and ed.id_edit=l.id_edit and b.id_biblio=l.id_biblio and t.id_tipo=l.id_tipo and e.id_carrera=c.id_carrera and e.rut_est=p.rut_est and cs.id_campus=c.id_campus and cs.id_campus= 2 and fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);

Select * from dosc;

d) Se debe indicar que funcionario realizo la transacción, con RUT, NOMBRE y APELLIDO.

create or replace view dosd as Select f.rut_func RUT_FUNCIONARIO, f.nombres NOMBRE_FUNCIONARIO, f.apellidos APELLIDO_FUNCIONARIO from libros l, editoriales ed, tipo t,biblioteca b, autores a,prestamo p,estudiantes e, carreras c, campus cs, funcionarios f where p.cod_libro=l.cod_libro and l.rut_autor=a.rut_autor and ed.id_edit=l.id_edit and b.id_biblio=l.id_biblio and t.id_tipo=l.id_tipo and e.id_carrera=c.id_carrera and e.rut_est=p.rut_est and

Page 6: Plsql

cs.id_campus=c.id_campus and cs.id_campus=f.id_campus and p.rut_func=f.rut_func and c.id_campus= 2 and fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);

Select * from dosd;

e) Además deberá indicarse la FECHA de PRESTAMO y la FECHA de ENTREGA de éste.

create or replace view dose as Select p.fecha_p FECHA_PRESTAMO, p.fecha_e FECHA_ENTREGA from libros l, editoriales ed, tipo t,biblioteca b, autores a,prestamo p,estudiantes e, carreras c, campus cs, funcionarios f where p.cod_libro=l.cod_libro and l.rut_autor=a.rut_autor and ed.id_edit=l.id_edit and b.id_biblio=l.id_biblio and t.id_tipo=l.id_tipo and e.id_carrera=c.id_carrera and e.rut_est=p.rut_est and cs.id_campus=c.id_campus and cs.id_campus=f.id_campus and p.rut_func=f.rut_func and c.id_campus= 2 and fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);

Select * from dose;

Page 7: Plsql

3.- Se solicita obtener lo siguiente (consultas): a) El numero de Estudiantes por Carrera.

Select c.nombre CARRERA, count(e.rut_est) NUMERO_ESTUDIANTES from carreras c, estudiantes e where c.id_carrera=e.id_carrera group by c.nombre

b) El numero de Estudiantes por Campus

Select cs.nombre campus, count(e.rut_est) NUMERO_ESTUDIANTES from carreras c, estudiantes e,campus cs where c.id_carrera=e.id_carrera and cs.id_campus=c.id_campus group by cs.nombre

c) El numero de Estudiantes por Ciudad

Select cc.nombre CIUDAD, count(e.rut_est) NUMERO_ESTUDIANTES from carreras c, estudiantes e, campus cs, ciudad cc where c.id_carrera=e.id_carrera and cs.id_campus=c.id_campus and cc.id_ciudad=cs.id_ciudad group by cc.nombre

Page 8: Plsql

d) El numero de Préstamos atrasados Select count(p.fecha_e) PRESTAMOS_ATRASADOS from prestamo p

e) El número de Prestamos Activos, No atrasados.

Select count(p.cod_libro) PRESTAMOS_ACTIVOS from prestamo p where p.fecha_e > (select to_char(sysdate, 'dd/mm/yyyy') from dual)