Dubbio teorico sql

gio881
salve! mi scuso per il numero di mesaggi nel forum! :lol:

ho un dubbio studiando sql
ho difficoltà a capire quando usare le subquery e quando non usarle mi spiego meglio


sto facendo questo esercizio:

con la seguente tabella

clienti (codcli , nome , cognome , città , salario , età)
prenot (codcli , codalb , acconto , camera , giorni)
alberghi (codalb , città , nome)

e l'esercizio mi dice

elencare cognome , nome dei clienti che hanno versato un acconto superiore a 100 per una prenotazione in alberghi di firenze


svolgendo l'esercizio io ho risolto così


select nome , cognome
from clienti
where codcli in (select codcli from prenot , alberghi where codalb.prenot = codalb.alberghi and acconto >100 and città = firenze)



solo che vedendo la soluzione trovo che l'esercizio è stato svolto senza subquery cioè così

select nome , cognome
from prenot , clienti , alberghi
where codcli.clienti=codcli.prenot and codalb.prenot=codalb.alberghi and acconto > 100 and città "firenze"


non capisco il criterio su cui stabile quando usare le subquery e quando non usarle!grazie in anticipo

Risposte
apatriarca
Non esiste alcuna regola. Entrambe le soluzioni sono perfettamente accettabili. Alcuni database funzionano meglio con certi tipi di query e quindi potresti avere performance migliori in alcuni casi, ma sinceramente non me ne preoccuperei troppo.

Personalmente avrei probabilmente scritto la seconda versione. Ma l'avrei fatto principalmente perché tendo ad usare le subquery solo quando non mi sono venuti in mente metodi per fare la stessa cosa senza di esse. Preferenza personale più che altro.

gio881
perfetto!grazie mille

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