JOINS E CHIAVI
A volte dobbiamo selezionare dati da due o più tabelle per avere dei risultati complete. In questi casi occorre effettuare dei Join.
Le tabelle in un database possono essere messe in relazione l’una con l’altra tramite delle chiavi.
Una chiave si dice primaria quando ha un valore unico per le righe. Lo scopo è quello di legare i dati tra le tabelle senza dover ripetere i dati in tutte le tabelle.
Una chiave si dice esterna se è il riferimento alla chiave primaria di un’altra tabella.
Abbiamo cinque tipi principali di Join:
- INNER JOIN
- LEFT OUTER JOIN
- RIGTH OUTER JOIN
- CROSS JOIN
- FULL JOIN
La differenza sta nella modalità con cui vengono unite le tabelle.
Prediamo in esame due tabelle che utilizzeremo per gli esempi:
Tabella Società
Tabella Ordini
INNER JOIN
L’INNER JOIN restituisce le righe delle tabelle se c’è un legame, altrimenti non le mostra.
Sintassi
SELECT
Campi
FROM Prima_tabella
INNER JOIN Seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio
SELECT
Societa, NumeroOrdine
FROM Societa
INNER JOIN Ordini
ON Societa.Codice = Ordini.CodiceSocieta
Otteniamo:
LEFT OUTER JOIN
Il LEFT OUTER JOIN restituisce tutte le righe della prima tabella (nell’esempio Impiegati), anche se non ci sono corrispondenze nella seconda tabella (nell’esempio Ordini).
Sintassi
SELECT
Campi
FROM Prima_tabella
LEFT OUTER JOIN Seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio
SELECT
Societa, NumeroOrdine
FROM Societa
LEFT OUTER JOIN Ordini
ON Societa.Codice = Ordini.CodiceSocieta
Otteniamo:
RIGTH OUTER JOIN
Un RIGTH OUTER JOIN restituisce tutte le righe della seconda tabella, anche se non ci sono legami con la prima
Sintassi
SELECT
Campi
FROM Prima_tabella
RIGTH OUTER JOIN Seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio
SELECT
Societa, NumeroOrdine
FROM Ordini
LEFT OUTER JOIN Societa
ON Societa.Codice = Ordini.CodiceSocieta
Otteniamo:
FULL JOIN
Il full outer join restituisce tutte le righe delle due tabelle messe in join, è in pratica la combnazione tra una left join ed una right join
Sintassi
SELECT
Campi
FROM Prima_tabella
FULL JOIN Seconda_tabella
ON prima_tabella.chiave_primaria = seconda_tabella.chiave_esterna
Esempio
SELECT
Societa, NumeroOrdine
FROM Societa
FULL JOIN Ordini
ON Societa.Codice = Ordini.CodiceSocieta
Otteniamo:
CROSS JOIN
La cross Join restituisce il prodotto cartesiano tra due tabelle, ovvero tutte le combinazioni dei record.
Sintassi
SELECT
Campi
FROM Prima_tabella
CROSS JOIN Seconda_tabella
Esempio
SELECT
Societa, NumeroOrdine
FROM Societa
CROSS JOIN Ordini
Otteniamo:
🥰🥰🥰