Istruzioni SQL

GigiBurubbu
ciao, non ho potuto seguire le lezioni di informatica causa lavoro e ora mi trovo a dover fare l'esame.
il prof non a pubblicato molto materiale, per cui mi sono arrangiato cercando su internet.
un esercizio chiede di scrivere le istruzioni in SQL; in generale ho capito come fare ma c'è una cosa che non capisco e in cui puntualmente incappo ovvero quando scrivere l'istruzione di una subquery e di un collegamento tra tabelle (credo siano questi i termini corretti).
sintatticamente le consegne degli esercii mi sembrano molto simili e non riesco a capire quando usare uno e quando l'altro.

ESEMPIO
Si considerino i seguenti schemi di relazione

Clienti(CodCli, Nome, Cognome,Citta, Salario, Eta)
Prenot(CodCli, CodAlb, Acconto, Camera, Giorni)
Alberghi(CodAlb, Città, Nome)

dove nella relazione Prenotazioni gli attributi CodCli e CodAl formano la chiave primaria, CodCli è chiave esterna per la relazione Clienti e CodAl è chiave esterna per la relazione Alberghi. Nella relazione Clienti l'attributo CodCli è la chiave primaria mentre nella relazione Alberghi la chiave primaria è CodAl.
Si noti che un cliente può fare più prenotazioni e uno stesso albergo può essere prenotato da diversi clienti.

1.Elencare tutti i dati dei clienti che hanno soggiornato a Roma
SELECT *
FROM Clienti
WHERE CodCli IN ( SELECT CodCli FROM Prenot P, Alberghi A WHERE P.CodAlb = A.CodAlb AND Citta=”Roma”)

2.Elencare tutti gli alberghi di Milano con un numero di prenotazioni maggiore di 7.
SELECT Nome
FROM Alberghi
WHERE Citta="Milano" AND CodAlb IN (SELECT CodAlb FROM Prenot GROUP BY
CodAlb HAVING COUNT(*) > 7)


3.Elencare cognome, nome dei clienti che hanno versato un acconto superiore a 100 per una prenotazione in alberghi di Firenze.
SELECT Cognome, Nome
FROM Prenot, Clienti, Alberghi
WHERE Clienti.CodCli = Prenotazioni.CodCli and Prenotazioni.CodAl = Alberghi.CodAland Acconto>100 and Citta = 'Firenze'


4.Elencare gli alberghi di Genova che hanno prenotazioni
SELECT Nome
FROM Alberghi
WHERE Citta=”Genova” AND CodAlb IN ( SELECT CodAlb FROM Prenot)

Risposte
apatriarca
Esistono spesso diversi modi diversi di scrivere la stessa query in SQL e sono tutti corretti. La scelta tra una soluzione e l'altra dipendono principalmente dalle performance di ognuna (anche se non è detto che una specifica query sia eseguita come l'istruzione SQL sembra suggerire). Ci sono poi ovviamente le preferenze di ogni singola persona e il metodo usato per affrontare questo genere di esercizi.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.