Un Programmatore PHP, per lo più innamorato dei database non poteva esimersi dallo scrivere una brevissima guida alle JOIN di MySQL. Le join sono costrutti tipici del linguaggio SQL che permettono l'incrocio di dati prevenienti da più tabelle.
In MySQL esistono 3 tipologie di Join: La CROSS JOIN, l'INNER JOIN e la OUTER JOIN e nel seguente articolo passeremo alla descrizione e alle differenze che esistono tra queste.
Supponiamo di avere le 2 seguenti tabelle che utilizzeremo negli esempi:
Dipendenti
id nomeCognome settore
-------------------------------
1 Mario Rossi Contabilità
2 Marco Bianchi Contabilità
3 Mario Rossi Marketing
4 Paolo Verdi Marketing
5 Michele Neri Tirocinio
Stipendi
id idDipendente stipendioMensile
--------------------------------
1 3 1400
2 2 1250
3 1 1200
4 4 1400
Cross Join
La CROSS JOIN è sicuramente la più semplice tipologia di join ma anche la meno utilizzabile in casi pratici dai programmatori poichè si limita ad un prodotto cartesiano tra le tabelle. Il risultato di questa join sarà dunque sarà una combinazione riga per riga (prodotto cartesiano) delle righe della tabella A sulla tabella B.
Esempio: SELECT * FROM Dipendenti JOIN Stipendi
Inner Join
La INNER JOIN è sicuramente la tipologia che ho utilizzato di più, essa permette di fare una selezione di dati tra più tabelle utilizzando la corrispondenza di un valore, e quindi come sintassi e molto simile alla precedente. Nel nostro caso ad esempio l'id della tabella dipendente deve corrispondere all'idDipendenti presente nella tabella stipendi, confrontandoli utilizzando il valore ON
Esempio: SELECT Dipendenti.nomeCognome, Stipendi.stipendioMensile FROM Dipendenti INNER JOIN Stipendi ON Dipendenti.id = Stipendi.idDipendenti
La INNER JOIN visualizzerà solo i dati che hanno una corrispondenza, inoltre nelle attuali versioni di MySQL non è più necessario specificare esplicitamente INNER, tale tipologia di join viene riconosciuta da JOIN seguito da una condizione ON di corrispondenza tra le tabelle.
Outer Join
Se con la INNER JOIN seleziono tutti i valori corrispondenti tra le tabelle, nella OUTER JOIN avremo come risultato anche quelli che non hanno una corrispondenza. La OUTER JOIN ha come parametri da aggiungere RIGHT e LEFT che ne determinano l'ordinamento. Con LEFT JOIN visualizzeremo le righe presenti nella tabella A non corrispondenti nella B e viceversa nel caso della RIGHT, ovviamente come nel caso precedente la dicitura OUTER potrà essere eliminata semplificando la JOIN che viene riconosciuta dai parametri RIGHT o LEFT.
Esempio: SELECT Dipendenti.nomeCognome, Stipendi.stipendioMensile FROM Dipendenti LEFT OUTER JOIN Stipendi ON Dipendenti.id = Stipendi.idDipendenti
.Nessun commento Presente.