SQL INNER JOIN (Italiano)

Riepilogo: in questo tutorial imparerai come eseguire query sui dati da più tabelle utilizzando l’istruzione SQL INNER JOIN.

Nel tutorial precedente, hai imparato come eseguire query sui dati da una singola tabella utilizzando l’istruzione SELECT. Tuttavia, spesso si desidera eseguire query sui dati di più tabelle per ottenere un set di risultati completo per l’analisi. Per eseguire query sui dati da più tabelle si utilizzano istruzioni join.

SQL fornisce diversi tipi di join come inner join, outer join (join esterno sinistro o join sinistro, join esterno destro o join destro e join esterno completo ) e auto join. In questo tutorial, ti mostreremo come utilizzare la clausola INNER JOIN.

Sintassi SQL INNER JOIN

Quanto segue illustra INNER JOIN sintassi per l’unione di due tabelle:

1
2
3
4
5

SELEZIONA
colonna1, colonna2
FROM
table_1
INNER JOIN table_2 ON join_condition;

Esaminiamo la sintassi sopra in maggior dettaglio:

  • Le table_1 e table_2 sono chiamate tabelle unite.
  • Per ogni riga in table_1, la query trova la riga corrispondente in table_2 che soddisfa la condizione di join. Se viene trovata la riga corrispondente, la query restituisce una riga che contiene i dati di entrambe le tabelle. In caso contrario, esamina la riga successiva in table_1 e questo processo continua fino a quando non vengono esaminate tutte le righe in table_1.

Per unire più di due tabelle, viene applicata la stessa logica.

Esempi di SQL INNER JOIN

SQL INNER JOIN: interrogazione dei dati da due tabelle esempio

In questo esempio, utilizzeremo le tabelle products e categories nel database di esempio. L’immagine seguente mostra il diagramma del database.

Nel diagramma sopra:

  • Una categoria può avere molti prodotti.
  • Un prodotto appartiene a una sola categoria.

Pertanto, esiste una relazione molti-a-uno tra le righe nel categories tabella e righe nella tabella products. Il collegamento tra le due tabelle è la colonna categoryid.

Dobbiamo interrogare i seguenti dati da entrambe le tabelle:

  • productID, productName dalla tabella products.
  • categoryName dalla categories tabella.

La seguente query recupera i dati da entrambe le tabelle:

1
2
3
4
5
6

SELEZIONA
productID, productName, categoryName
FROM
prodotti
INNER JOIN
categorie ON categories.categoryID = products.categoryID;

La condizione di join è specificata nella clausola INNER JOIN dopo la parola chiave ON come espressione:

1

categories.categoryID = products.categoryID

Per ogni riga in products, la query trova una riga corrispondente nella categories tabella che ha la stessa categoryid. Se c’è una corrispondenza tra due righe in entrambe le tabelle, restituisce una riga che contiene le colonne specificate nella clausola SELECT, cioè, l’ID del prodotto, il nome del prodotto e il nome della categoria; in caso contrario, controlla la riga successiva nella tabella products per trovare la riga corrispondente nella tabella categories. Questo processo continua fino a quando non viene esaminata l’ultima riga della tabella dei prodotti.

SQL INNER JOIN – interrogazione dei dati da tre tabelle

Possiamo usare le stesse tecniche per unire tre tabelle.La seguente query seleziona productID, productName, categoryName e supplier dalle tabelle products, categories e suppliers:

1
2
3
4
5
6
7
8
9
10
11

SELEZIONA
productID,
productName,
categoryName,
companyName AS fornitore
FROM
prodotti
INNER JOIN
categorie ON categorie. categoryID = products.categoryID
INNER JOIN
Suppliers ON Suppliers.supplierID = products.supplierID

SQL INNER JOIN implicito

Esiste un’altra forma di INNER JOIN chiamata inner join implicito come mostrato di seguito:

1
2
3
4
5
6
7

SELEZIONA
colonna1, colonna2
DA
tabella_1,
tabella_2
DOVE
join_condition;

In questo modulo, specifichi tutte le tabelle unite in la FROM clausola e inserire la condizione di join nella clausola WHERE dell’istruzione SELECT. Possiamo riscrivere l’esempio di query sopra utilizzando il INNER JOIN come segue:

1
2
3
4
5
6
7

SELEZIONA
productID, productName, categoryName
FROM
prodotti,
categorie
WHERE
products.categoryID = categories.categoryID;

Visualizza INNER JOIN utilizzando il diagramma di Venn

Write a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *