Entra

View Full Version : E' GIUSTA SECONDO VOI QUESTA QUERY?


lucajeck
20-06-2007, 23:04
Ciao a tutti, volevo chiedere se cortesemente qualcuno potrebbe correggere questa query e magari suggerirmi un

metodo migliore nel caso in cui sia giusta, anche se ne dubito.

Sia dato il seguente schema relazionale:

Organizzazione(codice, nome, città, data_fondazione) codice è chiave
Socio(codice, nome, città_resistenza, data_nascita, data_affilizione, organizzazione) codice è chiave
Evento(codice, descrizione, data, organizzazione_ospitante) codice è chiave
Contatto(codice, modalità, data, socio_contattante, socio_contatto) codice è chiave
Invito(codice_evento, codice_socio, ruolo) codice_evento e codice_socio sono chiave


Si osservi che la relazione Socio contiene informazioni su tutti gli associati, specificando, per ciascuno di essi,

l'organizzazione di appartenenza. Inoltre la relazione Invito continene informazioni sulla partecipazione dei soci

agli eventi, specificando anche il ruolo svolto dai soci delle varie partecipazioni. La relazione Contatto contiene

informazioni su tutti i contatti tra soci. Si noti che due soci, S1 ed S2, hanno avuto un contatto se S1 ha

contattato S2 oppure S2 ha contattato S1. Si osservi inoltre che gli attributi Socio.Organizzazione e

Evento.organizzazione_ospitante si riferiscono all'attributo Organizzazione.codice, mentre gli attributi

Contatto.socio_contattante e Contatto.socio_contatto si riferiscono all'attributo Socio.codice


Per ogni organizzazione il numero medio di eventi ospitati in un anno.

Create view OAC(Organizzazione, anno, evento) as
(SELECT organizzazione_ospitante, YEAR(data) as anno, codice
FROM Evento E)


Create view NumeroAnni(Organizzazione, anni) as
(Select Organizzazione, Cont(anno)
FROM AOC
GROUPBY organizzazione)


Create view NumeroEventi(Organizzazione, numeventi) as
(Select Organizzazione, Cont(evento)
FROM AOC
GROUPBY organizzazione)


SELECT NE.organizzazione, (NE.numeventi/NA.anni) as media
FROM NumeroEventi NE, NumeroAnni NA
WHERE NE.organizzazione=NA.organizzazione


GRAZIE A TUTTI!!

cionci
21-06-2007, 18:15
Perché crei 3 view ? Non ti bastava raggruppare il tutto direttamente in una sola query ?

lucajeck
21-06-2007, 20:50
Perché crei 3 view ? Non ti bastava raggruppare il tutto direttamente in una sola query ?


Si hai ragione è quello che cerco di capire, come posso svolgere l'interrogazione in modo più semplice? GRAZIE :)

cionci
21-06-2007, 21:44
Basta rimettere le query insieme:

select * from (select z from t1 group by z) as x, (select k from t group by k) as y
where x.z = y.k;

Le query le puoi annidare nel from anche più volte...