Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Rivista settimanale 1

Precedente
SUPERIORE
Successiva

Un numero settimanale contiene anche delle lettere

bulletARTICOLO <<-|---> NUMERO
bulletLETTERA <<---|-> ABBONATO
bulletLETTERA <<-|---> NUMERO

Schema relazionale esteso

Query

Le lettere di un abbonato, dati nome e cognome

SELECT LETTERA.*
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato = LETTERA.scrittaDA
WHERE Cognome=[Cognome abbonato] AND Nome=[Nome abbonato];

Gli articoli che trattano "arte" nel titolo

SELECT *
FROM ARTICOLO
WHERE Titolo LIKE "*arte*";

Gli articoli che NON trattano "arte" nel titolo

SELECT *
FROM ARTICOLO
WHERE Titolo NOT LIKE "*arte*"

Gli articoli che trattano un certo TESTO nel titolo

SELECT *
FROM ARTICOLO
WHERE Titolo LIKE "*" & [Testo contenuto?] & "*";

Quanti articoli in archivio?

SELECT COUNT(*)
FROM ARTICOLO;

Quanti articoli PUBBLICATI?

SELECT COUNT(pubblicatoIN)
FROM ARTICOLO;

oppure

SELECT COUNT(*)
FROM ARTICOLO
WHERE pubblicatoIN IS NOT NULL;

Quante lettere ricevute in un certo periodo?

SELECT COUNT(*)
FROM LETTERA
WHERE Data BETWEEN [Dalla data?] AND [Alla data?];

Gli abbonati che hanno scritto almeno una lettera

SELECT DISTINCT ABBONATO.*
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato=LETTERA.scrittaDA;

oppure

SELECT *
FROM ABBONATO
WHERE IDabbonato IN (SELECT scrittaDA
                     FROM LETTERA);

Gli abbonati che hanno scritto almeno X lettere

SELECT IDabbonato, cognome, nome
FROM ABBONATO
WHERE IDabbonato IN (SELECT scrittaDA
                     FROM LETTERA
                     GROUP BY scrittaDA
                     HAVING COUNT(*)>=[Numero minimo lettere?]);

oppure

SELECT IDabbonato, cognome, nome
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato=LETTERA.scrittaDA
GROUP BY IDabbonato, cognome, nome
HAVING COUNT(*)>=[Numero minimo lettere?];

..., e quante

SELECT IDabbonato, cognome, nome, COUNT(*) AS [Numero lettere]
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato=LETTERA.scrittaDA
GROUP BY IDabbonato, cognome, nome
HAVING COUNT(*)>=[Numero minimo lettere?];

Classifica per numero di lettere scritte

SELECT IDabbonato, cognome, nome, COUNT(*) AS [Numero lettere]
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato=LETTERA.scrittaDA
GROUP BY IDabbonato, cognome, nome
ORDER BY COUNT(*) DESC;

Classifica per numero di lettere scritte (i primi 5)

SELECT TOP 5 IDabbonato, cognome, nome, COUNT(*) AS [Numero lettere]
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato=LETTERA.scrittaDA
GROUP BY IDabbonato, cognome, nome
ORDER BY COUNT(*) DESC;

Classifica per numero di lettere scritte, almeno X

SELECT IDabbonato, cognome, nome, COUNT(*) AS [Numero lettere]
FROM ABBONATO INNER JOIN LETTERA ON ABBONATO.IDabbonato=LETTERA.scrittaDA
GROUP BY IDabbonato, cognome, nome
HAVING COUNT(*)>=[Numero minimo lettere?]
ORDER BY COUNT(*) DESC;

Rivista settimanale 1 - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva