Informatica 3 Liceo Scientifico Scienze Applicate/Es1 PrenotazioneVaporetto: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 16: | Riga 16: | ||
[[File:EsercizioPescatori.png|800px|sinistra|thumb|modello relazionale Pescatori]] |
[[File:EsercizioPescatori.png|800px|sinistra|thumb|modello relazionale Pescatori]] |
||
1) creare un elenco di tutti i pescatori ordinati (senso crescente) per nominativo |
|||
select * |
|||
from pescatori |
|||
order by nominativo |
|||
2) creare un elenco dei pescatori ordinato (senso decrecente) 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 enome) 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 tutti 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 |
|||
oppure |
|||
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=viaggi.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% |
|||
12) trova il nominativo del pescatore piu' anziano |
|||
select nominativo |
|||
from pescatori |
|||
where datanascita = ( select max(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 he havisto salire a bordo il cliente 1234 un numero di volte maggiore di 3 |
|||
select idpescatore |
|||
from idprenotazioni,viaggi |
|||
where idprenotazioni.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] |
|||
[[Categoria:Informatica 3 Liceo Scientifico Scienze Applicate|Informatica Teorica]] |
[[Categoria:Informatica 3 Liceo Scientifico Scienze Applicate|Informatica Teorica]] |
||
{{Avanzamento|100%|26 settembre 2014}} |
{{Avanzamento|100%|26 settembre 2014}} |
Versione delle 18:23, 9 nov 2014
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:
1) creare un elenco di tutti i pescatori ordinati (senso crescente) per nominativo
select * from pescatori order by nominativo
2) creare un elenco dei pescatori ordinato (senso decrecente) 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 enome) 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 tutti 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
oppure
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=viaggi.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%
12) trova il nominativo del pescatore piu' anziano
select nominativo from pescatori where datanascita = ( select max(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 he havisto salire a bordo il cliente 1234 un numero di volte maggiore di 3
select idpescatore from idprenotazioni,viaggi where idprenotazioni.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]