Clienti(IDCliente, Cognome, Nome, Telefono Indirizzo, Città, Nazione) Destinazione(IDDestinaz, Denominazione, Moneta, Clima, Vaccinazioni) Pacchetti(IDPacchetto, Descrizione, Modalità, Durata_giorni, Prezzo, CodDestinaz(Destinazioni)) Acquisti(IDAcquisto, Data, CodPacchetto(Pacchetti), CodCliente(Clienti)
Creare la vista che contiene l’identifiatore e la denomincazione delle destinazioni per cui è obbligatorio la vaccinazione antitifo
CREATE VIEW vista1 AS(
SELECT IDDestinaz, Denominazione FROM Destinazinoe
WHERE Vaccinazioni LIKE '%antitifo%'
);
Aumentare del 10% il prezzo dei pacchetti con destinazione aventi come moneta il dollaro statunitense (USD)
UPDATE Pacchetti SET Prezzo = Prezzo * 1.1
WHERE CodDestinaz IN(
SELECT IDDestinaz FROM Destinazione WHERE Moneta = 'USD'
);
Aggiungere alla tabella Clienti l’attributo obbligatorio email.
ALTER TABLE Clienti ADD COLUMN Email VARCHAR(40) NOT NULL;
L’id dei clienti che hanno acquistato tutti i pacchetti offerti dall’agenzia di viaggio
SELECT CodCliente FROM Acquisti
GROUP BY IDCliente
HAVING COUNT(DISTINCT CodPacchetto) = (
SELECT COUNT(*) FROM Pacchetti
);
L’id del pacchetto con prezzo massimo
SELECT IDPacchetto FROM Pacchetti
WHERE Prezzo >= ALL(SELECT Prezzo FROM Pacchetti)
Per le persone che hanno acquistato almeno 4 pacchetti nel 2015, il loro nome e cognome ed il numero complessivo di pacchetti acquistati
SELECT Nome, Cognome, COUNT(CodPacchetto)
FROM CLIENTI JOIN Acquisti ON (IDCliente = CodCliente)
WHERE IDCliente IN(
SELECT CodCliente FROM Acquisti
WHERE EXTRACT(YEAR FROM Data) = 2015
GROUP BY CodCliente
HAVING COUNT(CodPacchetto) >= 4
)
GROUP BY CodCliente, Nome, Cognome
La denominazione delle destinazioni che sono comprese in pacchetti con modalità treno o nave ma non aereo
SELECT Denominazione FROM Destinazioni
WHERE IDDestinaz IN
(SELECT CodDestinaz FROM Pacchetti WHERE Modalità = 'Treno')
UNION
SELECT Denominazione FROM Destinazioni
WHERE IDDestinaz IN
(SELECT CodDestinaz FROM Pacchetti WHERE Modalità = 'Nave')
EXCEPT
SELECT Denominazione FROM Destinazioni
WHERE IDDestinaz IN
(SELECT CodDestinaz FROM Pacchetti WHERE Modalità = 'Aereo')
Il nome, cognome e telefono dei clienti che non hanno mai acquistato pacchetti di durata maggiore di 3 giorni
SELECT Nome, Cognome, Telefono
FROM Clienti WHERE IDCliente NOT IN(
SELECT IDCliente
FROM Acquisti JOIN Pacchetti ON (CodPacchetto = IDPacchetto)
WHERE Durata_giorni > 3
);