|
Schema relazionale estesoQueryTutto sui proprietari (per nome...) SELECT * FROM PROPRIETARIO ORDER BY Nome; Tutto sui proprietari (compreso l'ammontare dei pagamenti effettuati) SELECT PROPRIETARIO.*, (SELECT SUM(Importo) FROM PAGAMENTO WHERE PROPRIETARIO.IDproprietario = PAGAMENTO.proprietarioID) FROM PROPRIETARIO ORDER BY Nome; Quanto ha pagato ciascun proprietario? SELECT IDproprietario, Nome, SUM(Importo) FROM PROPRIETARIO INNER JOIN PAGAMENTO ON PROPRIETARIO.IDproprietario = PAGAMENTO.proprietarioID GROUP BY IDproprietario, Nome Tutti i pagamenti, in qualche ordine, di un certo proprietario (dato l'ID) SELECT * FROM PAGAMENTO WHERE proprietarioID=[ID del proprietario?] ORDER BY Data; Tutti i pagamenti, in qualche ordine, di un certo proprietario (dato il Nome) SELECT PAGAMENTI.* FROM PROPRIETARIO INNER JOIN PAGAMENTO ON PROPRIETARIO.IDproprietario = PAGAMENTO.proprietarioID WHERE Nome LIKE [Nome del proprietario?] ORDER BY Data; Quanti vani possiede un certo proprietario (dato l'ID) SELECT SUM([Numero vani]) AS [TOTALE VANI] FROM APPARTAMENTO WHERE proprietarioID = [ID del proprietario?]; Quanti vani possiede un certo proprietario (dato il Nome) ... Tutto sugli appartamenti (e relativo proprietario...) con almeno X vani SELECT * FROM APPARTAMENTO INNER JOIN PROPRIETARIO ON APPARTAMENTO.proprietarioID = PROPRIETARIO.IDproprietario WHERE [Numero vani] >= [Quanti vani?]; L'importo di pagamento minimo, medio, massimo SELECT 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 SELECT MIN(Importo) AS [SPESA MINIMA], AVG(Importo) AS [SPESA MEDIA], MAX(Importo) AS [SPESA MASSIMA], SUM(Importo) AS [SPESA TOTALE] FROM SPESA WHERE appartamentoID = [Codice appartamento?]; Quanto è stato speso per la voce "ascensore" da una certa data SELECT SUM(Importo) AS [Spesa per ascensore dal ...] FROM SPESA INNER JOIN VOCE ON SPESA.voceID = VOCE.IDvoce WHERE (VOCE LIKE "ascensore") AND (Data >= [Da quale data?]); Quanto è stato speso per la voce "ascensore" nel corso del 2005 SELECT SUM(Importo) AS [Spesa per ascensore nel 2005] FROM SPESA INNER JOIN VOCE ON SPESA.voceID = VOCE.IDvoce WHERE (VOCE LIKE "ascensore") AND (Data BETWEEN #01/01/2005# AND #31/12/2005#); I dieci proprietari che hanno più appartamenti SELECT TOP 10 IDproprietario, Nome, COUNT(*) FROM (PROPRIETARIO INNER JOIN APPARTAMENTO ON PROPRIETARIO.IDproprietario = APPARTAMENTO.proprietarioID) GROUP BY IDproprietario, Nome ORDER BY COUNT(*) DESC; I dieci proprietari che hanno speso di più SELECT TOP 10 IDproprietario, Nome, SUM(Importo) FROM (PROPRIETARIO INNER JOIN APPARTAMENTO ON PROPRIETARIO.IDproprietario = APPARTAMENTO.proprietarioID) INNER JOIN SPESA ON APPARTAMENTO.IDappartamento = SPESA.appartamentoID GROUP BY IDproprietario, Nome ORDER BY SUM(Importo) DESC; I dieci proprietari che hanno speso di meno ... I dieci proprietari che hanno pagato di meno ... Gli appartamenti sfitti SELECT * FROM APPARTAMENTO WHERE (Inquilino IS NULL); Gli appartamenti affittati SELECT * FROM APPARTAMENTO WHERE (Inquilino IS NOT NULL); oppure SELECT * FROM APPARTAMENTO WHERE NOT(Inquilino IS NULL); Gli appartamenti dei proprietari "Bianchi", "Rossi" e "Verdi" SELECT APPARTAMENTO.*, PROPRIETARIO.nome FROM APPARTAMENTO INNER JOIN PROPRIETARIO ON APPARTAMENTO.proprietarioID = PROPRIETARIO.IDproprietario WHERE Nome IN ("Bianchi", "Rossi", "Verdi"); Gli appartamenti che non sono di proprietà di "Bianchi", "Rossi" e "Verdi" SELECT APPARTAMENTO.*, PROPRIETARIO.nome FROM APPARTAMENTO INNER JOIN PROPRIETARIO ON APPARTAMENTO.proprietarioID = PROPRIETARIO.IDproprietario WHERE Nome NOT IN ("Bianchi", "Rossi", "Verdi"); I proprietari che hanno effettuato almeno un pagamento SELECT * FROM PROPRIETARIO WHERE IDproprietario IN (SELECT proprietarioID FROM PAGAMENTO); oppure SELECT DISTINCT PROPRIETARIO.* FROM PROPRIETARIO INNER JOIN PAGAMENTO ON PROPRIETARIO.IDproprietario=PAGAMENTO.proprietarioID; oppure SELECT * FROM PROPRIETARIO WHERE EXISTS (SELECT * FROM PAGAMENTO WHERE PAGAMENTO.proprietarioID=PROPRIETARIO.IDproprietario); oppure SELECT * FROM PROPRIETARIO WHERE (SELECT COUNT(*) FROM PAGAMENTO WHERE PAGAMENTO.proprietarioID=PROPRIETARIO.IDproprietario) > 0; I proprietari che non hanno effettuato pagamenti ... |
|