facciamo che hai uno schema studenti ed uno esame...Originariamente inviato da ultrasflavio
nella traccia è quasi sempre chiesto di fare le query una volta con la select normale (con prodotto cartesiano..e già qui mi perdo..)e poi di rifare la stessa query con la JOIN.
premetto che sul libro, le join le fa tutte con la select, quindi non conosco ne sintassi ne niente...
studenti: matricola, nome, cognoem etc etc
esami: nome_esame, matricola, data, voto
vuoi prendere tutti gli esami fatti da un certo studente con matricola 100:
select nome_esame
from esami as e, studenti as s
where e.matricola = s.matricola //condizione di join
and s.matricola = 100
oppure
select nome_esame
from esami as e
join studenti as s on e.matricola = s.matricola //condizione di join
where matricola = 100
Credo sia questo che intende la tua prof... la prima query fa un prodotto cartesiano tra le due tabelle e poi seleziona, tra tutte, le tuple che hanno la stessa matricola sia per l'esame ch per lo studente, e gli (lo) studenti che hanno matricola 100
la seconda invece prende esami, fa il join con una precisa condizione (specificata esplicitamente, e non nella clausola where) unendo ad esame i dati degli studenti (ma non avendo il prodotto cartesiano = tutti gli esami in relazione con tutti gli studenti) e poi con la where seleziona solo le tuple in cui la matricola dello studente è 100
credo intendessi questo.. spero sia chiaro.
Quanto alle viste: in mysql niente per ora
![]()