Informatica 3 Liceo Scientifico Scienze Applicate/Es1 PrenotazioneVaporetto
Agenzia NaveBlu
[modifica | modifica sorgente]L'agenzia NaveBlu di Portotolle cura la vendita ai turisti di viaggi lungo il Po a bordo delle barche dei Pescatori del luogo. Ciascun viaggio dura un sol giorno. Ogni Pescatore ha una sola barca con un certo numero di posti disponibili e il viaggio si snoda lungo un itinerario prefissato che tocca caratteristiche localita' del Delta Polesano .Ogni Itinerario ha una sequenza di localita' decisa dal Capitano della Nave , che puo' essere riproposta anche in giorni diversi. Ogni capitano puo' offrire piu' itinerari (in giorni diversi). Di ciascuna Localita' visitata lungo un particolare itinerario vengono registrate diverse informazioni: una descrizione , due foto , 3 consigli su cosa visitare e un luogo dove poter mangiare del buon pesce.
L'agenzia che vende i biglietti per potersi imbarcare, deve poter visualizzare per una certo giorno l'elenco dei possibili itinerari con il numero di posti ancora disponibili. Ogni pescatore deve poter conoscere i nominativi delle persone che in una certa data si dovranno imbarcare. L'agenzia per un particolare itinerario relativo a un certo giorno deve poter visualizzare il numero di posti ancora disponibili. L'agenzia fissata una certa localita' e una certa data deve poter visualizzare i viaggi che la comprendono nel proprio itinerario . L'agenzia inoltre puo' stampare le informazioni di un particolare itinerario e il suo costo.
Definisci un database per gestire il servizio.
Soluzione:
select * from pescatori order by nominativo 2) creare un elenco dei pescatori ordinato (senso decrescente) per idpescatore che visualizzi idpescatore, nominativo e il nome della barca select idpescatore,nominativo,nomebarca from pescatori order by idpescadore DESC 3) visualizzare un elenco delle localita' che abbiano 2 foto , si vuole evidenziare idlocalita' descrizione foto1 foto2 e ristorante select idlocalita , descrizione,foto1,foto2,ristorante from localita where foto1 is not null && foto2 is not null 4) trovare tutti i clienti (visualizzarli ordinati per cognome e nome) che hanno il cognome che inizia per R select cognome,nome,idcliente,telefono,indirizzo from clienti where cognome like 'R%' order by cognome,nome 5) visualizzare tutte le localita' ( idlocalita,descrizione e ristorante) di un itinerario di cui si conosce l'id e' 5 select dlocalita,descrizione,ristorante from localita join localitaitinerario on localita.idlocalita = localitaitinerario.idlocalita where localitaitinerario.iditinerario= 5
select dlocalita,descrizione,ristorante from localita , localitaitinerario where localitaitinerario.iditinerario= 5 AND localita.idlocalita = localitaitinerario.idlocalita 6) trovare tutti i viaggi che si svolgono fra il 12/1/2016 e il 14/1/2016 ordinati per prezzo il cui capitano sia il signor marco rossi (nominativo) select idviaggio,iditinerario,data,prezzo from viaggi join pescatori on viaggi.idpescatore=pescatori.idpescatore where nominativo='marco rossi' and dataviaggio between '12/1/2016' and '14/1/2016' order by prezzo
7) calcolare del viaggio con id=234 quanti posti sono stati prenotati ( calcolarlo mediante le prenotazioni effettuate) select sum(persone) from prenotazioni where idviaggio=234 commenta la presenza della voce posti prenotati nella tabella viaggi 8) calcolare quante prenotazioni ha fatto il signor marco rossi (pensiamo sia l'unico cliente con questo nome) select count(*) from prenotazioni join clienti on prenotazioni.idcliente = clienti.idcliente where cognome='rossi' and nome='marco' 9) per ogni pescatore calcolare quanti sono stati i viaggi svolti nel mese di gennaio 2013 select idpescatore, count(*) from viaggi where dataviaggio between '1/1/2013' and '31/1/2013' group by idpescatore 10) visualizza il viaggio ( con tutte le informazioni) piu' costoso di oggi select top 1 * from viaggi where dataviaggio= now() order by costo 11) visualizza tutti i viaggi che si svolgono il 2/3/2016 e che hanno fra le localita' del loro itinerario "boccasette" ( boccasette e' una parola presente nella descrizione della localita' select idviaggio, iditinerario from viaggi,itinerario,localitaitinerario,localita where viaggi.iditinerario=itinerario.iditinerario and itinerario.iditinerario=localitaitinerario.iditinerario and localitaitinerario.idlocalita = localita.idlocalita and localita.descrizione like '%boccasette% and viaggi.dataviaggio='2/3/2016' 12) trova il nominativo del pescatore piu' anziano select nominativo from pescatori where datanascita = ( select min(datanascita) from pescatori ) 13) visualizza tutti i clienti con i posti prenotati da ciascuno per il viaggio 345 (evidenzia lo stato del pagamento) select idcliente,cognome,nome, persone,pagato from clienti,prenotazioni where clienti.idcliente=prenotazioni.idcliente AND idviaggio=345 14) si vuole stampare il percorso (localita dopo localita) di un particolare itinerario discuti del problema che sorge nel ottenere questa informazione e indica il rimedio 15) visualizza ogni pescatore che ha visto salire a bordo il cliente 1234 un numero di volte maggiore di 3 select idpescatore from prenotazioni,viaggi where prenotazioni.idviaggio = viaggi.idviaggio and idcliente= 1234 group by idpescatore having count(*)> 3 16) visualizza tutti i dati di un cliente il cui id viene scelto al momento dell'interrogazione select * from clienti where idcliente=[inserisci id cliente]
|