Join tra tabelle
Introduzione
Le JOIN stanno ad indicare unione tra tabelle. L'importanza principale della JOIN risiede nella possibilità che offre per correlare e visualizzare dati appartenenti a tabelle diverse o alla medesima tabella, logicamente correlati tra di loro. Le più comuni sono essenzialmente le seguenti:
- INNER JOIN: è la più comune oltre che il tipo predefinito. Corrisponde all'unione cartesiana di due tabelle e all'eliminazione di tutti i record risultanti che non trovino riscontro nelle condizioni della query. E' una funzione che permette di combinare i valori di due tabelle differenti secondo il criterio da noi stabilito. Le righe delle tabelle vengono combinate solo se i campi collegati con join soddisfano una determinata condizione.
- LEFT JOIN: riporta tutte le righe della tabella "di sinistra" e le corrispondenti righe della tabella "di destra", riempiendo con NULL i campi che, nella riga estratta, non hanno corrispondenze
- RIGHT JOIN: è l'opposto della LEFT e riporta tutte le righe della tabella "di destra" e le corrispondenti righe della tabella di "sinistra", con NULL i campi che, nella riga estratta, non hanno corrispondenze
- FULL OUTER JOIN: è un compendio delle due precedenti e riporta tutte le righe di entrambe le tabelle riempiendo con NULL i campi della riga che non hanno corrispondenze
In una istruzione MYSQL la JOIN viene specificata come parte della clausola FROM. Una JOIN, così come una semplice SELECT, restituisce un reaultset che nel caso dell'uso di JOIN, è il risultato dell'unione di due o più tabelle.
Per le JOIN tra tabelle prenderemo in esame questi due gruppi di tabelle. Tuttavia qualche volta è previsto di lavorare con le JOIN con una sola tabella.
Nel primo gruppo di tabelle vediamo che la sql_libri e la sql_citta sono semplici tabelle, mentre la sql_lib_iscritti contiene tra i suoi campi uno denominato id_citta che mette in relazione la tabella sql_lib_iscritti e la tabella sql_citta. La tabella sql_lib_prestiti ha due campi che creano relazioni con altrettante tabelle: il campo id_libro mette in relazione la tabella sql_lib_prestiti con la tabella sql_libri ed il campo id_iscritto che mette in relazione la tabella sql_lib_prestiti con la tabella sql_lib_iscritti.
Nel socondo gruppo di tabelle abbiamo la tabella sql_agenda che contiene il campo id_citta che la mette in relazione con la tabella sql_citta.
Questo gioco di chiavi interne e chiavi esterne risulteranno molto utili per formulare richieste anche complesse con l'aiuto delle JOIN.
Qui di seguito vediamo l'elenco delle tabelle usate in questo tutorial
sql_libri, sql_citta, sql_agenda, sql_lib_prestiti
Qui sotto viene mostrata la struttura delle tabelle usate
|
Nell'immagine qui sotto, invece sono evidenziate le relazioni esistenti tra le tabelle che useremo. ![]() |