|
Quando viene svolto un servizio si registrano i dati del socio "donatore", del socio "ricevitore" e la prestazione (oltre che la data e le ore) Diagramma E/RSchema relazionale estesoTra E/R e relazionale differiscono alcuni nomi... QueryChi può svolgere una prestazione in una zona SELECT SOCIO.* FROM ZONA INNER JOIN (SOCIO INNER JOIN ((CATEGORIA INNER JOIN PRESTAZIONE ON CATEGORIA.IDcategoria = PRESTAZIONE.categoriaID) INNER JOIN SOCIO_CATEGORIA ON CATEGORIA.IDcategoria = SOCIO_CATEGORIA.categoriaID) ON SOCIO.IDsocio = SOCIO_CATEGORIA.socioID) ON ZONA.IDzona = SOCIO.zonaID WHERE (PRESTAZIONE.Descrizione = [scegli la prestazione]) AND (ZONA.Descrizione = [scegli la zona]); Classifica per ore ricevute SELECT IDsocio, Nome, Cognome, Sum(Ore) AS [Ore ricevute] FROM SOCIO INNER JOIN LAVORO ON (SOCIO.IDsocio = LAVORO.a_socioID) GROUP BY IDsocio, Nome, Cognome ORDER BY Sum(Ore) DESC; Classifica per ore prestate SELECT IDsocio, Nome, Cognome, Sum(Ore) AS [Ore prestate] FROM SOCIO INNER JOIN LAVORO ON (SOCIO.IDsocio = LAVORO.da_socioID) GROUP BY IDsocio, Nome, Cognome ORDER BY Sum(Ore) DESC; Classifica per prestazioni SELECT IDprestazione, PRESTAZIONE.Descrizione, Sum(LAVORO.Ore) AS SommaDiOre FROM PRESTAZIONE INNER JOIN LAVORO ON (PRESTAZIONE.IDprestazione = LAVORO.prestazioneID) GROUP BY IDprestazione, PRESTAZIONE.Descrizione ORDER BY Sum(LAVORO.Ore) DESC; Chi ha diritto a una prestazione SELECT SOCIO.* FROM SOCIO WHERE (SELECT Sum(LAVORO.Ore) AS SommaDiOreDa FROM LAVORO WHERE (LAVORO.da_socioID=SOCIO.IDsocio)) > (SELECT Sum(LAVORO.Ore) AS SommaDiOreA FROM LAVORO WHERE (LAVORO.a_socioID=SOCIO.IDsocio)); Chi svolge altre attività oltre a SEGRETERIA SELECT SOCIO.* FROM SOCIO INNER JOIN (CATEGORIA INNER JOIN SOCIO_CATEGORIA ON CATEGORIA.IDcategoria = SOCIO_CATEGORIA.categoriaID) ON SOCIO.IDsocio = SOCIO_CATEGORIA.socioID WHERE (CATEGORIA.Descrizione = "SEGRETERIA") AND (SOCIO.IDsocio In (SELECT SOCIO.IDsocio FROM SOCIO INNER JOIN (CATEGORIA INNER JOIN SOCIO_CATEGORIA ON CATEGORIA.IDcategoria = SOCIO_CATEGORIA.categoriaID) ON (SOCIO.IDsocio = SOCIO_CATEGORIA.socioID) WHERE (CATEGORIA.Descrizione <> "SEGRETERIA"))); |
|