|
Un numero settimanale contiene anche delle lettere
Schema relazionale estesoQueryLe 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; |
|