La differenza è che con INNER JOIN imponi che DEVE esserci sempre una relazione tra le 2 tabelle in assenza di una relazione tra un record della prima nella seconda tabella, il record della prima tabella non viene estratto. Nel caso di Left se anche capitasse che un record della prima non trovi nulla nella seconda tabella il record della prima viene estratto ugualmente.
Nel caso esposto ipotizziamo che tra i vari record della tabella prodotti tu abbia il prodotto 4 che punta al venditore X che però non è presente nella tabella venditori.
In caso di inner join avresti
Prodotto Venditore Negozio
1 Y NY
2 K NK
3 K NK
----------------------- Manca tutto record del prodotto 4
In caso di left avresti
Prodotto Venditore Negozio
1 Y NY
2 K NK
3 K NK
4 X NULL------- il prodotto 4 c'è ma la colonna Negozio è NULL
La differenza è molto molto rilevante. In un certo senso la INNER "limita" la i record estratti a solo quelli per i quali esiste la relazione tra le tabelle, la left è meno limitante. l'uso dell'una o dell'altra formulazione dipende da cosa si vuole ottenere se a te non interessa mostrare prodotti per i quali non è individuabile un negozio usa INNER se per te rileva maggiormente esporre il prodotto anche se il negozio non è individuabile usa la LEFT.


Rispondi quotando