La biblioteca
Si consideri questo schema:
Utenti (cod-utente, nome, cognome)
Libri (cod-libro, titolo, autore)
Prestiti (cod-prestito, fkcod-utente, fkcod-libro, data-inizio, data-fine)
1) Elenco dei libri:
SELECT titolo, autore
FROM Libri;
2) Elenco dei libri prestati all’utente “Gernone”
SELECT titolo, autore
FROM Utenti, Libri, Prestiti
WHERE fkcod-utente=cod-utente
AND fkcod-libro=cod-libro
AND cognome=”GERNONE”;
3) Come la query 2, ma con data (di inizio) in ordine cronologico inverso
SELECT titolo, autore, data-inizio
FROM Utenti, Libri, Prestiti
WHERE fkcod-utente=cod-utente
AND fkcod-libro=cod-libro
AND cognome=”GERNONE”
ORDER BY data-inizio DESC;
4) Elenco degli utenti con i titoli di libro che non hanno restituito il libro
SELECT nome, cognome, titolo
FROM Utenti, Libri, Prestiti
WHERE fkcod-utente=cod-utente
AND fkcod-libro=cod-libro
AND data-fine IS NULL;
5) Classifica dei libri maggiormente prestati (con più di 2 prestiti)
SELECT titolo, autore, count(*)
FROM Libri, Prestiti
WHERE fkcod-libro=cod-libro
GROUP BY titolo
HAVING count(*) >2
ORDER BY COUNT(*) DESC;
6) Elenco dei libri con prestito maggiore di 15 gg. Usare DATEDIFF (‘d’, data-inizio, data-fine)
SELECT titolo, autore
FROM Utenti, Libri, Prestiti
WHERE fkcod-libro=cod-libro
AND data-fine IS NOT NULL
AND datediff(‘d’, data-inizio, data-fine)>15;