CodeGym /Corsi /SQL SELF /Introduzione all'unione dei dati: JOIN

Introduzione all'unione dei dati: JOIN

SQL SELF
Livello 11 , Lezione 0
Disponibile

Oggi passiamo a uno degli argomenti più interessanti quando si lavora con i database relazionali — unire dati da più tabelle usando JOIN. È uno strumento potentissimo che ti apre le porte per creare relazioni complesse e fare analisi serie.

Pensa al tuo database come a un fumetto gigante, dove ogni tabella separata è una vignetta. Per raccontare tutta la storia, devi collegare queste vignette. Ed è proprio qui che JOIN ti dà una mano. L'unione dei dati è il processo che permette a una query di tirare fuori info da più tabelle e collegarle in base a certe condizioni.

I database relazionali sono costruiti attorno al concetto di relazioni tra tabelle. Ogni tabella tiene info su una certa entità, e per avere una visione completa spesso vogliamo collegare dati da tabelle diverse. Per esempio:

  • La tabella students contiene la lista degli studenti.
  • La tabella courses tiene la lista dei corsi.
  • La tabella enrollments mostra chi frequenta quali corsi.

Per sapere quale studente segue quale corso, dobbiamo collegare queste tabelle. Ai colloqui, uno sviluppatore che sa usare JOIN fa subito una bella figura, perché è una delle skill più richieste quando si lavora coi dati.

Tipi principali di join

In PostgreSQL ci sono diversi tipi di JOIN, ognuno pensato per situazioni specifiche. Vediamoli in generale, senza impazzire subito con esempi complicati:

Tipo di JOIN Descrizione
INNER JOIN Restituisce le righe che hanno una corrispondenza in entrambe le tabelle.
LEFT JOIN Restituisce tutte le righe dalla tabella di sinistra, e solo le corrispondenti da quella di destra.
RIGHT JOIN Restituisce tutte le righe dalla tabella di destra, e solo le corrispondenti da quella di sinistra.
FULL OUTER JOIN Restituisce tutte le righe da entrambe le tabelle, mettendo NULL dove non ci sono corrispondenze.

La scelta di quale JOIN usare dipende da quello che ti serve:

  • Se ti servono solo i dati che corrispondono in entrambe le tabelle, usa INNER JOIN.
  • Se vuoi tenere tutti i dati da una tabella, e solo le corrispondenze dall'altra, vanno bene LEFT JOIN o RIGHT JOIN.
  • Se vuoi tutti i dati da entrambe le tabelle, anche se non corrispondono, usa FULL OUTER JOIN.

Dai, vediamo come funzionano questi join direttamente con degli esempi pratici.

Esempio di esercizio — "Chi segue quale corso?"

Supponiamo di avere tre tabelle:

Tabella students

id name
1 Otto
2 Anna
3 Peter

Tabella courses

id title
101 Matematica
102 Inglese

Tabella enrollments

student_id course_id
1 101
2 102

Queste tabelle sono collegate così:

  • Il campo id in students è l'identificatore unico dello studente.
  • Il campo id in courses è l'identificatore unico del corso.
  • Nella tabella enrollments le colonne student_id e course_id creano il collegamento tra studenti e corsi.

Supponiamo di dover rispondere a questa domanda: quale studente è iscritto a quale corso?

La risposta la otteniamo con un JOIN. Colleghiamo le tabelle in base alle loro relazioni:

  • Colleghiamo students e enrollments su id = student_id.
  • Colleghiamo enrollments e courses su course_id = id.

Ecco come sarà la query SQL:

SELECT students.name, courses.title
FROM enrollments
JOIN students ON enrollments.student_id = students.id
JOIN courses ON enrollments.course_id = courses.id;

Cosa fa questa query:

  • FROM enrollments — partiamo dalla tabella che collega studenti e corsi.
  • JOIN students ON enrollments.student_id = students.id — ci uniamo agli studenti per prendere i loro nomi.
  • JOIN courses ON enrollments.course_id = courses.id — ci uniamo ai corsi per prendere i titoli.

Il risultato sarà così:

name title
Otto Matematica
Anna Inglese

Occhio: se uno studente non ha nessun corso, non comparirà nel risultato — perché il JOIN di default è stretto (INNER JOIN). Più avanti vedremo come includere anche questi studenti usando LEFT JOIN.

Se qualcosa in questa query ti sembra strano, tranquillo! Capirci bene è proprio lo scopo delle prossime lezioni!

Perché serve davvero nella vita reale?

Ora che hai capito come collegare le tabelle, parliamo del mondo vero. Ti sei mai chiesto come funziona un e-commerce? Tipo, quando scegli uno smartphone e vedi le recensioni degli altri utenti.

  1. La tabella products contiene info sui prodotti.
  2. La tabella reviews contiene le recensioni dei clienti.
  3. La tabella customers contiene info sui clienti stessi

Per mostrare le recensioni sul sito, bisogna unire le tabelle products, reviews e customers. Questo è proprio il JOIN in azione.

A cosa stare attenti?

Prima di tuffarci nei JOIN nelle prossime lezioni, ecco un paio di cose da ricordare:

  1. L'ordine nei JOIN conta. Per esempio, LEFT JOIN restituisce le righe dalla tabella di sinistra, quindi se cambi l'ordine cambia anche il risultato.
  2. Lavora con tabelle piccole. All'inizio evita query su milioni di righe. Ricorda, anche la query più semplice deve essere chiara.
  3. Abituati a pensare alle relazioni. Quando inizi a vedere le tabelle come parti di una grande struttura, lavorare con i JOIN diventa naturale.

Da oggi iniziamo a diventare veri SQL-specialist. Nella prossima lezione scoprirai come usare INNER JOIN per tirare fuori dati da due tabelle. Sarà un bel passo avanti nel tuo percorso con PostgreSQL.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION