Schema relazionale
Query
- Tutto sui proprietari (per nome…)
123SELECT *FROM PROPRIETARIOORDER BY Nome - Tutto sui proprietari (compreso l’ammontare dei pagamenti effettuati)
12345SELECT PROPRIETARIO.*, (SELECT SUM(Importo)FROM PAGAMENTOWHERE PAGAMENTO.proprietarioID = PROPRIETARIO.IDproprietario)FROM PROPRIETARIOORDER BY Nome - Quanto ha pagato ciascun proprietario?
123SELECT IDproprietario, Nome, SUM(Importo)FROM PROPRIETARIO INNER JOIN PAGAMENTO ON PROPRIETARIO.IDproprietario = PAGAMENTO.proprietarioIDGROUP BY IDproprietario, Nome - Tutti i pagamenti, in qualche ordine, di un certo proprietario (dato l’ID)
1234SELECT *FROM PAGAMENTOWHERE proprietarioID=[ID del proprietario?]ORDER BY DATA - Tutti i pagamenti, in qualche ordine, di un certo proprietario (dato il Nome)
1234SELECT PAGAMENTI.*FROM PROPRIETARIO INNER JOIN PAGAMENTO ON PROPRIETARIO.IDproprietario = PAGAMENTO.proprietarioIDWHERE Nome LIKE [Nome del proprietario?]ORDER BY DATA - Quanti vani possiede un certo proprietario (dato l’ID)
123SELECT Sum([Numero vani]) AS [TOTALE VANI]FROM APPARTAMENTOWHERE proprietarioID = [ID del proprietario?] - Quanti vani possiede un certo proprietario (dato il Nome)
…
- Tutto sugli appartamenti (e relativo proprietario…) con almeno X vani
123SELECT *FROM APPARTAMENTO INNER JOIN PROPRIETARIO ON APPARTAMENTO.proprietarioID = PROPRIETARIO.IDproprietarioWHERE [Numero vani] >= [Quanti vani?] - L’importo di pagamento minimo, medio, massimo
12SELECT Min(Importo) AS [IMPORTO MINIMO],Avg(Importo) AS [IMPORTO MEDIO],Max(Importo) AS [IMPORTO MASSIMO]FROM PAGAMENTO - La spesa minima, media, massima, totale per un certo appartamento
1234SELECT Min(Importo) AS [SPESA MINIMA], Avg(Importo) AS [SPESA MEDIA],Max(Importo) AS [SPESA MASSIMA], Sum(Importo) AS [SPESA TOTALE]FROM SPESAWHERE appartamentoID = [Codice appartamento?] - Quanto è stato speso per la voce ascensore da una certa data
1234SELECT Sum(Importo) AS [Spesa per ascensore dal ...]FROM SPESA INNER JOIN VOCE ON SPESA.voceID = VOCE.IDvoceWHERE (VOCE LIKE "ascensore") AND(DATA >= [Da quale DATA?]) - Quanto è stato speso per la voce ascensore nel corso del 2005
1234SELECT Sum(Importo) AS [Spesa per ascensore nel 2005]FROM SPESA INNER JOIN VOCE ON SPESA.voceID = VOCE.IDvoceWHERE (VOCE LIKE "ascensore") AND(DATA BETWEEN #01/01/2005# AND #31/12/2005#) - I dieci proprietari che hanno più appartamenti
1234SELECT TOP 10 IDproprietario, Nome, Count(*)FROM PROPRIETARIO INNER JOIN APPARTAMENTO ON PROPRIETARIO.IDproprietario = APPARTAMENTO.proprietarioIDGROUP BY IDproprietario, NomeORDER BY Count(*) DESC - I dieci proprietari che hanno speso di più
12345SELECT TOP 10 IDproprietario, Nome, Sum(Importo)FROM (PROPRIETARIO INNER JOIN APPARTAMENTO ON PROPRIETARIO.IDproprietario = APPARTAMENTO.proprietarioID)INNER JOIN SPESA ON APPARTAMENTO.IDappartamento = SPESA.appartamentoIDGROUP BY IDproprietario, NomeORDER BY Sum(Importo) DESC - I dieci proprietari che hanno speso di meno
- I dieci proprietari che hanno pagato di meno
- Gli appartamenti sfitti
123SELECT *FROM APPARTAMENTOWHERE Inquilino IS NULL - Gli appartamenti affittati
123SELECT *FROM APPARTAMENTOWHERE Inquilino IS NOT NULL
oppure
123SELECT *FROM APPARTAMENTOWHERE NOT(Inquilino IS NULL) - Gli appartamenti dei proprietari Bianchi, Rossi e Verdi
123SELECT APPARTAMENTO.*, PROPRIETARIO.nomeFROM APPARTAMENTO INNER JOIN PROPRIETARIO ON APPARTAMENTO.proprietarioID = PROPRIETARIO.IDproprietarioWHERE Nome IN ("Bianchi", "Rossi", "Verdi") - Gli appartamenti che non sono di proprietà di Bianchi, Rossi e Verdi
123SELECT APPARTAMENTO.*, PROPRIETARIO.nomeFROM APPARTAMENTO INNER JOIN PROPRIETARIO ON APPARTAMENTO.proprietarioID = PROPRIETARIO.IDproprietarioWHERE Nome NOT IN ("Bianchi", "Rossi", "Verdi") - I proprietari che hanno effettuato almeno un pagamento
1234SELECT *FROM PROPRIETARIOWHERE IDproprietario IN (SELECT proprietarioIDFROM PAGAMENTO)
oppure
12SELECT DISTINCT PROPRIETARIO.*FROM PROPRIETARIO INNER JOIN PAGAMENTO ON PROPRIETARIO.IDproprietario = PAGAMENTO.proprietarioID
oppure
12345SELECT *FROM PROPRIETARIOWHERE EXISTS (SELECT *FROM PAGAMENTOWHERE PAGAMENTO.proprietarioID = PROPRIETARIO.IDproprietario)
oppure
12345SELECT *FROM PROPRIETARIOWHERE (SELECT Count(*)FROM PAGAMENTOWHERE PAGAMENTO.proprietarioID=PROPRIETARIO.IDproprietario) > 0 - I proprietari che non hanno effettuato pagamenti