View Full Version : [SQL] Join
ciao a tutti.
la domanda è rapida e concisa: qual'è l'utilità di usare il join?
cioè, su due ipotetiche tabelle
Persone (Nome,Patente) e Auto (Modello, Patente)
se io usassi
SELECT *
FROM Persone JOIN Auto
ON (Persone.Patente = Auto.Patente);
o
SELECT *
FROM Persone, Auto
WHERE Persone.Patente=Auto.Patente;
non sarebbe la stessa cosa?
si così si..
ma metti di dover estrarre nome, patente ed eventuali auto da:
carlo AA
tizio BB
caio CC
audi AA
mercedes AA
fiat BB
devi per forza usare una JOIN...una left outer ok...ma fa sempre parte delle join ;)
john_revelator
22-01-2010, 15:30
ciao a tutti.
la domanda è rapida e concisa: qual'è l'utilità di usare il join?
cioè, su due ipotetiche tabelle
Persone (Nome,Patente) e Auto (Modello, Patente)
se io usassi
SELECT *
FROM Persone JOIN Auto
ON (Persone.Patente = Auto.Patente);
o
SELECT *
FROM Persone, Auto
WHERE Persone.Patente=Auto.Patente;
non sarebbe la stessa cosa?
Anche la seconda è una inner join. Semplicemente è implicita.
Anche la seconda è una inner join. Semplicemente è implicita.
'sera...è un po che nn ci si fa vedere.... :)
john_revelator
22-01-2010, 15:43
'sera...è un po che nn ci si fa vedere.... :)
Non me ne parlare, un pò incasinato col lavoro. :fagiano:
Quando mi è possibile una capatina la faccio sempre. ;)
anonimizzato
22-01-2010, 22:09
Si le due sintassi producono lo stesso risultato.
Tuttavia la prima è maggiormente consigliabile per questioni di portabilità e credo anche di prestazioni.
perfetto, grazie mille :)
cdimauro
23-01-2010, 09:09
Si le due sintassi producono lo stesso risultato.
Tuttavia la prima è maggiormente consigliabile per questioni di portabilità e credo anche di prestazioni.
In tutta onestà, se un engine SQL non sa riconoscere una join espressa in forma di where, lo butto direttamente nel cesso.
anonimizzato
23-01-2010, 09:41
In tutta onestà, se un engine SQL non sa riconoscere una join espressa in forma di where, lo butto direttamente nel cesso.
Potresti spiegarti meglio?
cdimauro
23-01-2010, 10:18
Un engine SQL che si rispetti quando fa il parsing della query costruisce generalmente un AST (http://en.wikipedia.org/wiki/Abstract_syntax_tree), per poi generare il codice interno per gestire la richiesta.
Nell'analisi dell'AST si può benissimo riconoscere che la condizione che "lega" due tabelle è effettivamente una join, e quindi generare opportuno codice per gestire efficacemente il caso.
Si tratta di roba ormai stravecchia e ben nota non soltanto in letteratura. Insomma, strausatissima.
Per cui se un engine SQL oggigiorno non riesce a riconoscere questi casi e gestirli correttamente, vuol dire che definirlo scarso è fargli un complimento. Per cui merita di essere defenestrato (magari assieme a chi l'ha scritto).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.