A partire da qui? Questa lezione fa parte di un tutorial completo sull’utilizzo di SQL per l’analisi dei dati. Guarda l’inizio.
In questa lezione tratteremo:
- INNER JOIN
- Unire tabelle con nomi di colonne identici
- Problema di pratica
INNER JOIN
Nella lezione precedente, hai imparato le basi dei join SQL utilizzando i dati sui giocatori di football del college. Tutti i giocatori della tabellaplayers
corrispondono a una scuola nella tabellateams
. Ma cosa succede se i dati non sono così puliti?, Cosa succede se ci sono più scuole nella tabellateams
con lo stesso nome? O se un giocatore va in una scuola che non è nella tabellateams
?
Se ci sono più scuole nella tabella teams
con lo stesso nome, ognuna di queste righe verrà unita a righe corrispondenti nella tabella players
., Tornando all’esempio precedente con Michael Campanaro, se ci fossero tre righe nella tabella teams
dove school_name = 'Wake Forest'
, la query join sopra restituirebbe tre righe con Michael Campanaro.
Spesso accade che una o entrambe le tabelle unite contengano righe che non hanno corrispondenze nell’altra tabella. Il modo in cui viene gestito dipende dal fatto che tu stia facendo un join interno o un join esterno.
Inizieremo con join interni, che possono essere scritti comeJOIN benn.college_football_teams teams
oINNER JOIN benn.college_football_teams teams
., I join interni eliminano le righe da entrambe le tabelle che non soddisfano la condizione di join stabilita nell’istruzioneON
. In termini matematici, un join interno è l’intersezione delle due tabelle.
Pertanto, se un giocatore va in una scuola che non è nella tabella teams
, quel giocatore non sarà incluso nel risultato di un join interno., Allo stesso modo, se ci sono scuole nella tabella teams
che non corrispondono a nessuna scuola nella tabella players
, anche queste righe non saranno incluse nei risultati.
Unire tabelle con nomi di colonne identici
Quando si uniscono due tabelle, è possibile che entrambe le tabelle abbiano colonne con nomi identici., Nell’esempio seguente, in entrambe le tabelle sono colonne chiamato school_name
:
I risultati possono supportare solo una colonna con un dato nome—quando si include 2 colonne con lo stesso nome, i risultati mostrano semplicemente l’esatto stesso set di risultati per entrambe le colonne, anche se le due colonne devono contenere diversi tipi di dati. È possibile evitare questo nominando le colonne singolarmente., Succede che queste due colonne in realtà contengono gli stessi dati in quanto sono utilizzati per la chiave di join, ma la query seguente tecnicamente permette queste colonne indipendenti:
Affinare le vostre competenze SQL
la Pratica del Problema
Scrivere una query che visualizza i nomi dei giocatori, scuola di nomi e conferenze per le scuole in “FBS (Division I-A Squadre)” divisione.
Provalo Vedi la risposta