Le organizzazioni stanno generando e analizzando volumi di dati senza pari con ogni minuto che passa. In questo articolo, dimostreremo come possiamo utilizzare SQL Inner Join per interrogare e accedere ai dati da più tabelle che memorizzano questi dati in continua crescita nei database SQL.

SQL Join

Prima di iniziare con SQL Inner Join, vorrei chiamare SQL Join qui., Join è la clausola ampiamente utilizzata nel server SQL essenzialmente per combinare e recuperare i dati da due o più tabelle. In un database relazionale del mondo reale, i dati sono strutturati in un gran numero di tabelle ed è per questo che esiste una costante necessità di unire queste tabelle multiple in base a relazioni logiche tra di loro. Esistono quattro tipi di join di base in SQL Server: Inner, Outer (left, right, full), Self e Cross join. Per ottenere una rapida panoramica di tutti questi join, consiglierei di passare attraverso questo link, SQL Join types overview e tutorial.,

Questo articolo si rivolge a tutto il Join interno in SQL Server, quindi passiamo ad esso.

Definizione di SQL Inner Join

La clausola Inner Join in SQL Server crea una nuova tabella (non fisica) combinando righe con valori corrispondenti in due o più tabelle. Questo join si basa su una relazione logica (o un campo comune) tra le tabelle e viene utilizzato per recuperare i dati visualizzati in entrambe le tabelle.

Supponiamo, abbiamo due tabelle, Tabella A e Tabella B, che vorremmo unire usando SQL Inner Join., Il risultato di questo join sarà un nuovo set di risultati che restituisce le righe corrispondenti in entrambe queste tabelle. La parte di intersezione in nero di seguito mostra i dati recuperati utilizzando Inner Join in SQL Server.

SQL Server Inner Join Syntax

Di seguito è riportata la sintassi di base di Inner Join.

SELEZIONA Column_list
DA TABLE1
INNER JOIN TABLE2
SU Table1.ColName = Table2.ColName

La sintassi Inner Join confronta fondamentalmente le righe di Table1 con Table2 per verificare se qualcosa corrisponde in base alla condizione fornita nella clausola ON., Quando la condizione Join è soddisfatta, restituisce righe corrispondenti in entrambe le tabelle con le colonne selezionate nella clausola SELECT.

La clausola SQL Inner Join è la stessa della clausola Join e funziona allo stesso modo se non specifichiamo il tipo (INNER) durante l’utilizzo della clausola Join. In breve, Inner Join è la parola chiave predefinita per Join ed entrambi possono essere usati in modo intercambiabile.

Nota: Useremo la parola chiave ‘Inner’ Join in questo articolo per maggiore chiarezza. Puoi ometterlo mentre scrivi le tue query e puoi usare solo ‘Join’.,

SQL Inner Join in action

Proviamo a capire il concetto di Inner Join attraverso un interessante campione di dati che si occupa di un’azienda di Pizza e della sua distribuzione alimentare. Ho intenzione di creare due tabelle prima – tabella ‘PizzaCompany’ che gestisce diversi rami di punti vendita di pizza in alcune città e tabella ‘Foods’ che memorizza i dettagli di distribuzione di cibo in queste aziende. È possibile eseguire il codice seguente per creare e popolare i dati in queste due tabelle. Tutti questi dati sono ipotetici ed è possibile creare in uno qualsiasi dei database esistenti.,

Ecco come appaiono i dati nella tabella PizzaCompany:

Creiamo e popoliamo la tabella degli alimenti ora. CompanyID in questa tabella è la chiave esterna che fa riferimento alla chiave primaria della tabella PizzaCompany creata sopra.

La seguente tabella mostra i dati nella tabella Alimenti. Questa tabella memorizza le informazioni come le unità vendute per prodotto alimentare e anche l’outlet pizza (CompanyId) che lo consegna.,

Ora, se vogliamo vedere gli articoli e anche le unità vendute da ogni azienda di pizza, possiamo combinare queste due tabelle con l’aiuto di una clausola di join interna utilizzata sul campo CompanyId (nel nostro caso questo condivide una relazione di chiave esterna).

1
2
3
4

SELEZIONARE pz.CompanyCity, pz.Nome azienda, pz.CompanyId COME PizzaCompanyId, f.,CompanyID COME FoodsCompanyId, f.ItemName, f.UnitsSold
DA PizzaCompany pz
INNER JOIN Foods f
SU pz.CompanyId = f. CompanyId

Di seguito è riportato il set di risultati della query SQL Inner Join sopra riportata. Per ogni riga nella tabella PizzaCompany, Inner Join confronta e trova le righe corrispondenti negli alimenti della tabella e restituisce tutte le righe corrispondenti come mostrato di seguito. E se noti, CompanyId = 5 è escluso dal risultato della query, in quanto non corrisponde alla tabella degli alimenti.,

Con l’aiuto del set di risultati di cui sopra, possiamo distinguere gli articoli e anche il conteggio degli articoli consegnati dai punti vendita di pizza in varie città. Per esempio, Dominos fatto una consegna di 7 grissini e 11 Pizza media a Los Angeles.

SQL Inner Join su tre tavoli

Esploriamo di più in questo join e supponiamo che tre parchi acquatici (sembra estate) vengano aperti nello stato e questi parchi acquatici esternalizzino il cibo dai punti vendita di pizza menzionati nella tabella PizzaCompany.,

Ho intenzione di creare rapidamente un parco acquatico da tavolo e caricare alcuni dati arbitrari in esso come mostrato di seguito.

E sotto è l’output di questa tabella.

Come dice il proverbio, l’immagine vale più di mille parole. Vediamo rapidamente il diagramma del database di queste tre tabelle con le loro relazioni per capirle meglio.

Ora includeremo questa terza tabella nella clausola SQL Inner Join per vedere come influenzerà il set di risultati., Secondo i dati della tabella WaterPark, i tre parchi acquatici hanno esternalizzato il cibo da tutte le aziende di pizza tranne Pizzeria (Id=6) e chuck e cheese (Id = 7). Esegui il codice qui sotto per vedere tutta la distribuzione di cibo attraverso i parchi acquatici dai punti vendita di pizza.

1
2
3
4
5
6

SELEZIONARE pz.CompanyId, pz.CompanyCity, pz.Nome azienda, f. Nome elemento, f.,UnitsSold,
w. WaterParkLocation
DA PizzaCompany pz
INNER JOIN Foods SU pz.CompanyId = f. CompanyId
INNER JOIN WaterPark w ON w. CompanyId = pz.CompanyId
ORDINA PER pz.CompanyId

Basato su CompanyId, Inner Join SQL corrisponde a righe in entrambe le tabelle, PizzaCompany (Tabella 1) e Alimenti (Tabella 2) e, successivamente, cerca una corrispondenza nel parco Acquatico (Tabella 3) per restituire le righe., Come mostrato di seguito, con l’aggiunta di inner join su WaterPark, CompanyId (6,7 (a parte 5)) sono anche esclusi dal risultato finale impostato come condizione w.CompanyId = pz.CompanyId non è soddisfatto per Ids (6,7). Questo è il modo in cui SQL Inner join aiuta a restituire righe specifiche di dati da più tabelle.

Scaviamo in SQL Inner Join more con alcune altre clausole T-SQL.

Usando WHERE con Inner Join

Possiamo filtrare i record in base a una condizione specificata quando SQL Inner Join viene utilizzato con una clausola WHERE., Supponiamo che vorremmo ottenere le righe in cui le unità vendute erano più di 6.

Nella query seguente, viene aggiunta la clausola WHERE per estrarre i risultati con valore superiore a 6 per le unità vendute.

1
2
3
4
5

SELEZIONARE pz.CompanyId, pz.CompanyCity, pz.CompanyName, f.ItemName, f. UnitsSold
DA PizzaCompany pz
INNER JOIN Foods SU pz.,CompanyId = f. CompanyId
DOVE f. UnitsSold > 6
ORDINA PER pz.CompanyCity

Esegui sopra il codice in SSMS per vedere il risultato seguente. Quattro di questi record vengono restituiti da questa query.

L’utilizzo di Group By con Inner Join

SQL Inner Join ci consente di utilizzare la clausola Group by insieme alle funzioni aggregate per raggruppare il risultato impostato da una o più colonne., Group by funziona convenzionalmente con Inner Join sul risultato finale restituito dopo aver unito due o più tabelle. Se non si ha familiarità con la clausola Group by in SQL, suggerirei di passare attraverso questo per avere una rapida comprensione di questo concetto. Di seguito è riportato il codice che utilizza la clausola Group By con il Join interno.

1
2
3
4
5

SELEZIONARE pz.CompanyCity, pz.,CompanyName, SUM (f.UnitsSold) AS TotalQuantitySold
DA PizzaCompany pz
INNER JOIN Foods SU pz.CompanyId = f.CompanyId
GRUPPO PER pz.CompanyCity, pz.Nome azienda
ORDINA PER pz.CompanyCity

Qui, intendiamo ottenere il totale degli articoli venduti da ogni azienda di Pizza presente in Città. Come puoi vedere di seguito, il risultato aggregato nella colonna ‘totalquantitysold’ come 18 (7+11) e 9 (6+3) per Los Angeles e San Diego rispettivamente viene calcolato.,

Una breve nota su Equi e Theta Join

Prima di concludere questo articolo, andiamo rapidamente oltre termini, uno sviluppatore SQL può sentire sporadicamente – Equi e Theta Join.

Equi Join

Come suggerisce il nome, equi join contiene un operatore di uguaglianza ‘=’ nella clausola Join o nella condizione WHERE. SQL Inner, Left, Right sono tutti i join equi quando l’operatore ‘ = ‘ viene utilizzato come operatore di confronto., Di solito, quando c’è una menzione di SQL Inner Join, è considerato come un Inner equi Join, solo in una situazione insolita, l’operatore di uguaglianza non viene utilizzato.

Per semplificare le cose, farò riferimento al database di esempio AdventureWorksDW2017 e farò una query contro le tabelle esistenti per dimostrare come appare equi join.

1
2
3
4

SELEZIONARE e.EmployeeKey, e.,FirstName, e. Title, e.HireDate,
fs.SalesAmountQuota DA DimEmployee e
INNER JOIN FactSalesQuota fs
SU e. EmployeeKey = fs.EmployeeKey

Theta-Join (Non equi join)

Non equi join è fondamentalmente contrario di equi-join e viene utilizzato quando ci uniamo in una condizione diversa dall’operatore‘=’. Questo tipo è usato raramente nella pratica., Below is an example that makes use of theta join with an inequality operator (<) to evaluate profit by estimating cost and selling prices in two tables.

1
SELECT * FROM Table1 T1, Table2 T2 WHERE T1.ProductCost < T2.,SalesPrice

Conclusione

Spero che questo articolo su ‘SQL Inner Join’ fornisca un approccio comprensibile a una delle clausole importanti e frequentemente utilizzate – ‘Inner join’ nel server SQL per combinare più tabelle. Nel caso in cui avete domande, non esitate a chiedere nella sezione commenti qui sotto.,

Per continuare a imparare su Join SQL, è possibile fare riferimento alla seguente post:

  • OUTER JOIN SQL panoramica ed esempi
  • SQL Join introduzione e panoramica
  • Autore
  • Post Recenti
Gauri è un SQL Server Professional e dispone di 6+ anni di esperienza di lavoro con la global multinazionale di consulenza e tecnologia organizzazioni., È molto appassionata di lavorare su argomenti di SQL Server come Azure SQL Database, SQL Server Reporting Services, R, Python, Power BI, motore di database, ecc. Ha anni di esperienza nella documentazione tecnica ed è appassionata di authoring tecnologico.
Ha una profonda esperienza nella progettazione di soluzioni di dati e analisi e nel garantirne stabilità, affidabilità e prestazioni. È anche certificata in SQL Server e ha superato certificazioni come 70-463: Implementazione di Data Warehouse con Microsoft SQL Server.,
Visualizza tutti i messaggi di Gauri Mahajan

Ultimi messaggi di Gauri Mahajan (vedi tutti)
  • Esplorare Azure Analisi del Modello di Servizi e di Dati – 4 febbraio 2021
  • iniziamo con Azure Servizi di Analisi – gennaio 13, 2021
  • Collegare Azure Databricks dati di Potenza BI Desktop – 1 giugno 2020