Ejemplos sql resueltos

Solo disponible en BuenasTareas
  • Páginas : 5 (1167 palabras )
  • Descarga(s) : 0
  • Publicado : 10 de septiembre de 2012
Leer documento completo
Vista previa del texto
TRABAJO PRACTICO 2 - IBBDD 2011



-----------------------------------------------------------------------------------------

INTEGRANTES



-----------------------------------------------------------------------------------------

Tablas del modelo de datos ibd_tp2_v3



autores (idAutores, nombre, apellido, f_nacimiento, email, web)

bibliotecas(idBibliotecas, nombre,f_inaguracion, web, calle, nro, dpto, piso, cp)

biblio_socios(idBiblioSocios, idSocios, idBibliotecas)

editoriales(idEditoriales, denominacion, email, web, pais, ciudad, calle, nro, piso, dpto, cp, vigente)

ejemplares(idEjemplares, NIU, idLibros, idBibliotecas, estado)

libros(idLibros, ISBN, titulo, anio_de_edicion, idEditoriales)

libros_autores(idLibrosAutores, idAutores, idLibros)prestamos(idPrestamos, fec_prestamo, idSocios, idEjemplares, idBibliotecas, fec_devolucion, fec_efec_devolucion)

reservas(idReservas, fec_reserva, idBibliotecas, idSocios, idLibros, fec_fin_reserva, efectiva)

sanciones(idSanciones, fec_inicio, idBibliotecas, idSocios, fec_fin, motivo)

socios(idSocios, dni, nombre, apellido, f_nacimiento, calle, nro, piso, dpto, cp, email, estudiante)tel_bibliotecas(idTel_bibliotecas, numero, idBibliotecas)

tel_editoriales(idTel_editoriales, numero, idEditoriales)

tel_socios(idTelSocios, numero, idSocios)





a) Para una biblioteca dada, listar el ISBN y título de todos los libros que tengan

alguna copia en estado malo, junto con la cantidad de copias en ese estado para el

libro.



SELECT b.idBibliotecas, l.isbn, l.titulo,count(l.idLibros) as en_mal_estado

FROM bibliotecas b INNER JOIN ejemplares e ON (b.idBibliotecas = e.idBibliotecas)

INNER JOIN libros l ON (e.idLibros = l.idLibros)

WHERE (e.estado = 'malo')

GROUP BY l.idLibros



b) Listar las bibliotecas (código y nombre) en las que existe al menos un ejemplar de

un libro cuyo ISBN se conoce.



SELECT distinct b.idBibliotecas,b.nombre

FROM bibliotecas b INNER JOIN ejemplares e ON (b.idBibliotecas = e.idBibliotecas)

INNER JOIN libros l ON (e.idLibros = l.idLibros)

WHERE (l.isbn = '950-742-894-X')



c.) Listar los libros (isbn, título y año de edición) existentes en una biblioteca dada

ordenados por su título.



SELECT distinct l.isbn, l.titulo, l.anio_de_edicion, b.idBibliotecas

FROMbibliotecas b INNER JOIN ejemplares e ON (b.idBibliotecas = e.idBibliotecas)

INNER JOIN libros l ON (e.idLibros = l.idLibros)

ORDER BY 2



d) Listar todas las sanciones que haya tenido un socio en cualquier biblioteca,

ordenadas cronológicamente. Se debe consignar el nombre de la biblioteca, el

motivo de la sanción y las fechas de inicio y fin de la misma.



SELECTsoc.idSocios, soc.nombre, soc.apellido, b.nombre, s.motivo, s.fec_inicio, s.fec_fin

FROM bibliotecas b INNER JOIN sanciones s ON (b.idBibliotecas = s.idBibliotecas)

INNER JOIN socios soc ON (s.idSocios = soc.idSocios)

ORDER BY s.fec_inicio



e) Listar todos los isbn de libros que están prestados actualmente y todos los libr

que están reservados actualmente, en una biblioteca dada, conun campo

“Asignación” con valor “P” si está prestado y valor “R” si está reservado.



SELECT b.idBibliotecas, l.*, 'P' as Asiganación

FROM bibliotecas b INNER JOIN prestamos p ON (b.idBibliotecas = p.idBibliotecas)

INNER JOIN ejemplares e ON (p.idEjemplares = e.idEjemplares)

INNER JOIN libros l ON (e.idLibros = l.idLibros)

WHERE (p.fec_efec_devolucion IS NULL)UNION ALL

SELECT b.idBibliotecas, l.*, 'R' as Asiganación

FROM bibliotecas b INNER JOIN reservas r ON (b.idBibliotecas = r.idBibliotecas)

INNER JOIN libros l ON (r.idLibros = l.idLibros)

WHERE (r.fec_fin_reserva > CURDATE())

ORDER BY 1



g) Listar todos los autores que hayan escrito libros de una editorial dada.



SELECT a.idAutores, a.nombre, a.apellido, l.titulo...
tracking img