 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
vista: occupazione sala Clicca QUI per vedere il messaggio nel forum |
| donivl16 |
ciao ragazzi avete qualche idea su questa vista :Occupazione delle sale. La vista restituisce la percentuale media di occupazione delle sale
cinematografiche per ogni anno e per ogni sala.
Grazie.... |
| DarkSchneider |
| ma io leggendo il testo del progetto ho immaginato non che si trattasse di un dato percentuale, ma proprio di una vista vera e propria della sala, che visualizzi i posti liberi e quelli occupati,e che permetta all'utente di prenotarsi i posti liberi ... |
| donivl16 |
si e vero che si trata di una vista vera ma nn che utente puo prenotare su questa vista.quello che ho inteso io l'utente nn ha niente a che fare con questa vista.
A me mi e venuta una idea di creare due viste, prima una vista per trovare l'occupazione della sala , un altra per selezionare l'anno
e una vista finale per aggiungere la media ma nn penso che vada bene per prof.... |
| CaboM.BNA |
io penso che sia una vista "invocabile solo dagli amministratori"...
non credo che abbia un qualche "fine pratico", ma suppongo ci viene richiesta per semplice scopo didattico: dimostrare cioè che siamo stati in grado di scriverla... (come anche per l'ultima vista) |
| donivl16 |
si tutti l' abbiamo capito ma il problema sta per trovare i posti occupati nel' anno defininito esempio :
nell 2008 --> sala 1, 300 posti occupati ,media = posti occupati/posti totali
nell 2008 --> sala 2, 400 posti occupati ,media = posti occupati/posti totali
nell 2007 --> sala 1, 400 posti occupati, media = posti occupati/posti totali
...............
e cosi via per tutti gli anni
io nn riesco a trovare esempio: nell 2008 posti occupati di una sala per tutto l'anno
e qui che mi sono fermato |
| phantom |
Ma io non ho capito il senso di questa vista...cioè per farla io dovrei avere nella base di dati i posti occupati in una sala degli anni passati???
E questo dato dove dovrei metterlo all'interno della BD ?? |
| marbliss |
| Puoi mettere questi dati nella tabella prenotazioni, se ne hai creata una. Non penso che cancelli le prenotazioni una volta passata la data dello spettacolo, almeno io non l'ho faccio |
| phantom |
Ok, ma dunque nella tabella prenotazioni dovrei avere ad esempio
ID - Data - Ora - Cinema - Sala - Posti Prenotati
...e in base a questa calcolare i dati per ogni anno?
Perchè io ho una tabella prenotazione ma come attributi ha id_spettatore e id_spettacolo (chiave primaria composta), in poche parole è una tabella che si aggiorna quando ci sono le prenotazioni fatte dal web dagli utenti...
Se qualcuno mi può fare chiarezza.......:? |
| marbliss |
Ma nella tua tabella prenotazione non metti la posizione dei posti prenotati, come ad es. fila e numero posto? Ricordati che oltre a tenere conto che un utente ha fatto un tot di prenotazioni, devi tenere conto anche della loro posizione.
Io l'ho pensata così questa vista: conto quante prenotazioni sono state fatte durante un certo anno per una certa sala, indipendentemente dal fatto che appartengono a spettacoli diversi. Poi divido il tutto con (12*nr posti totali della sala) perché ho sommato le prenotazioni di 12 mesi. E secondo me questa è l'occupazione :) |
| phantom |
Originally posted by marbliss
Ma nella tua tabella prenotazione non metti la posizione dei posti prenotati, come ad es. fila e numero posto? Ricordati che oltre a tenere conto che un utente ha fatto un tot di prenotazioni, devi tenere conto anche della loro posizione.
Io l'ho pensata così questa vista: conto quante prenotazioni sono state fatte durante un certo anno per una certa sala, indipendentemente dal fatto che appartengono a spettacoli diversi. Poi divido il tutto con (12*nr posti totali della sala) perché ho sommato le prenotazioni di 12 mesi. E secondo me questa è l'occupazione :)
Ok,hai ragione...tu che attributi hai nella tabella prenotazione?
Una cosa tipo:
id_prenotazione, id_spettatore, id_spettacolo, n°posto, n°fila
pensi possa andare bene? |
| marbliss |
Sì, ho proprio quelli attributi ma senza id_prenotazione. Ho preferito mettere come chiave primaria (id_spettacolo, n°posto, n°fila), perché in caso di cancellazione di una prenotazione, non voglio avere tanti id_prenotazione vuoti.
Fai un code: select count(*), id_spettacolo, n°posto, n°fila
from prenotazione
group by id_spettacolo, n°posto, n°fila;
e poi dividi il tutto con 12*posti_totali (dove posti_totali lo prendi dalla sala riferita nello spettacolo) |
| phantom |
Originally posted by marbliss
Sì, ho proprio quelli attributi ma senza id_prenotazione. Ho preferito mettere come chiave primaria (id_spettacolo, n°posto, n°fila), perché in caso di cancellazione di una prenotazione, non voglio avere tanti id_prenotazione vuoti.
Fai un code: select count(*), id_spettacolo, n°posto, n°fila
from prenotazione
group by id_spettacolo, n°posto, n°fila;
e poi dividi il tutto con 12*posti_totali (dove posti_totali lo prendi dalla sala riferita nello spettacolo)
Ok,ma come faccio a fare la selezione per ogni anno? la vista richiede che la media sia organizzata per anno e quindi non so come fare a selezionare le prenotazioni di un anno in particolare...
Poi per quanto riguarda la chiave primaria...se lascio id_prenotazione e l'utente cancella la prenotazione non viene cancellato anche id_prenotazione??
Mi potresti dare il comando sql completo della vista, anche via pm se ti va!
Ciao e grazie!! |
| phantom |
| Ragazzi qualcuno sa aiutarmi su questa vista?? |
| antares85 |
marbliss scusa ma non penso sia il calcolo esatto quello che hai fatto te per calcolare l'occupazione media di una sala:
le sale non proiettano film tutti i giorni quindi sarebbe meglio fare somma_posti_prenotati(nell'anno,in quella sala) / numero_spettacoli(nell'anno,in quella sala)
anche perchè con una prenotazione si possono prenotare più posti.
Voi non avete una tabella Spettacolo? Se si con che campi?
Ho iniziato a pensare ieri a questa vista e ancora non ho trovato una soluzione decente...
ciao! |
| phantom |
Originally posted by antares85
marbliss scusa ma non penso sia il calcolo esatto quello che hai fatto te per calcolare l'occupazione media di una sala:
le sale non proiettano film tutti i giorni quindi sarebbe meglio fare somma_posti_prenotati(nell'anno,in quella sala) / numero_spettacoli(nell'anno,in quella sala)
anche perchè con una prenotazione si possono prenotare più posti.
Voi non avete una tabella Spettacolo? Se si con che campi?
Ho iniziato a pensare ieri a questa vista e ancora non ho trovato una soluzione decente...
ciao!
Bè sul fatto di avere una prenotazione con più posti non è detto...io per ogni posto ho una prenotazione altrimenti avrei un po' di casini! |
| antares85 |
beh ma con una prenotazione si possono prenotare uno o più posti...è un casino ma è così...
a meno che non si voglia interpretare la prenotazione non come prenotazione di n posti x uno spettacolo ma come la singola prenotazione di un posto per uno spettacolo come hai fatto te, ma non è il massimo della vita (l'utente anzichè prenotare n posti alla volta dovrebbe eseguire la procedura per ogni posto)... |
| phantom |
Originally posted by antares85
beh ma con una prenotazione si possono prenotare uno o più posti...è un casino ma è così...
a meno che non si voglia interpretare la prenotazione non come prenotazione di n posti x uno spettacolo ma come la singola prenotazione di un posto per uno spettacolo come hai fatto te, ma non è il massimo della vita (l'utente anzichè prenotare n posti alla volta dovrebbe eseguire la procedura per ogni posto)...
Ma allora dove metti poi il posto prenotato?
Io mi ritrovo una tabella PRENOTAZIONE in cui ho ID_PRENOTAZIONE, ID_SPETTATORE, ID_SPETTACOLO,ID_SALA INT, N_POSTO, FILA.
Quindi con questa struttura posso memorizzare il posto esatto ma non posso memorizzare quanti posti prenota uno spettatore. Di conseguenza la mia modalità di prenotazione consiste nel prenotare un posto alla volta... |
| antares85 |
quindi quando l'utente ha la schermata con i posti della sala gli fai selezionare un posto solo alla volta cliccando poi su un tasto "prenota" e scalando l'importo dal conto?
se è così oltre ad essere scomodo c'è anche il rischio che riesce a prenotare solo un posto e non il secondo se non ha abbastanza soldi sul conto... |
| phantom |
Originally posted by antares85
quindi quando l'utente ha la schermata con i posti della sala gli fai selezionare un posto solo alla volta cliccando poi su un tasto "prenota" e scalando l'importo dal conto?
se è così oltre ad essere scomodo c'è anche il rischio che riesce a prenotare solo un posto e non il secondo se non ha abbastanza soldi sul conto...
Ancora non ho fatto la pagina della prenotazione sulla parte web perchè devo ancora mettere a posto questa vista (titolo del thread) e i trigger...
Mi dici allora come hai fatto tu? Cosi modifico il mio schema in modo che poi la prenotazione sul web sia più comodo...in particolare intendo dove memorizzi il posto prenotato e poi la tabella in cui memorizzi la prenotazione come è strutturata??
Se vuoi risp pure in pm!
Ciao! |
| marbliss |
Originally posted by antares85
marbliss scusa ma non penso sia il calcolo esatto quello che hai fatto te per calcolare l'occupazione media di una sala:
le sale non proiettano film tutti i giorni quindi sarebbe meglio fare somma_posti_prenotati(nell'anno,in quella sala) / numero_spettacoli(nell'anno,in quella sala)
anche perchè con una prenotazione si possono prenotare più posti.
Voi non avete una tabella Spettacolo? Se si con che campi?
Ho iniziato a pensare ieri a questa vista e ancora non ho trovato una soluzione decente...
ciao!
Ciao ragazzi,
è vero il modo in cui ho calcolato prima l'occupazione non è giusto, me l'ha detto anche l'assistente e quindi mi ha dato 2 punti invece di 3 :P. Mi ha invece detto che è più semplice calcolarla tenendo conto dei posti liberi rimasti per ogni spettacolo |
| antares85 |
| non l'ho ancora ultimata,ti farò sapere |
| phantom |
Originally posted by antares85
non l'ho ancora ultimata,ti farò sapere
Ok grazie!! |
| donivl16 |
CREATE OR REPLACE VIEW occupazione_sala AS
SELECT date_part('year'::text, spettacoli.data) AS anno, sale.nome AS sala, (sum(sale.posti_tot) - sum(spettacoli.posti_liberi)) * 100 / sum(sale.posti_tot) AS percentuale
FROM sale, spettacoli
WHERE spettacoli.id_sala = sale.sala_id
GROUP BY sale.sala_id, date_part('year'::text, spettacoli.data), sale.nome;
questa vista coincide con mio database potete modificarla con la vostra funziona su postgres |
| phantom |
Originally posted by donivl16
CREATE OR REPLACE VIEW occupazione_sala AS
SELECT date_part('year'::text, spettacoli.data) AS anno, sale.nome AS sala, (sum(sale.posti_tot) - sum(spettacoli.posti_liberi)) * 100 / sum(sale.posti_tot) AS percentuale
FROM sale, spettacoli
WHERE spettacoli.id_sala = sale.sala_id
GROUP BY sale.sala_id, date_part('year'::text, spettacoli.data), sale.nome;
questa vista coincide con mio database potete modificarla con la vostra funziona su postgres
Mi spieghi la parte 'year'::text?? io nel mio database ho un campo date per ogni spettacolo...quindi ho mm/gg/anno... |
| donivl16 |
| allora su postgres ce una funzione date_part usato dopo SELECT che prende soltanto l'anno che si trova nella tabella spettacoli precisamente sull atributo data, quindi year::text li viene assegnata soltanto l'anno . se non hai un campo data sulla tabella dei spettacoli devi trovare il modo per assegnarla che coincide con il tuo database. ok ?? è chiaro? |
| phantom |
Originally posted by donivl16
allora su postgres ce una funzione date_part usato dopo SELECT che prende soltanto l'anno che si trova nella tabella spettacoli precisamente sull atributo data, quindi year::text li viene assegnata soltanto l'anno . se non hai un campo data sulla tabella dei spettacoli devi trovare il modo per assegnarla che coincide con il tuo database. ok ?? è chiaro?
Mitico!Grazie!
Sono riuscito ad adattarla alla mia base di dati...ho solo un problema con una sala, invece di darmi occupazione 0 (visto che non ho prenotazioni, mi dà 26...provo a sistemare la cosa con un paio di tentativi! |
| morbido007 |
ciao,
potete darmi qualche dritta su come fare il trigger "aggiornamento occupazione della sala"? |
|
|
|
|