|
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 ... |
|