Organizații sunt generarea și analiza de neegalat volume de date cu fiecare minut care trece. În acest articol, vom demonstra cum putem folosi SQL inner Join pentru a interoga și a accesa date din mai multe tabele care stochează aceste date în continuă creștere în bazele de date SQL.

SQL se alătură

înainte de a începe cu SQL inner Join, aș dori să sun SQL Join aici., Alăturați-vă este clauza utilizate pe scară largă în SQL Server, în esență, pentru a combina și de a prelua date de la două sau mai multe tabele. Într-o bază de date relațională din lumea reală, datele sunt structurate într-un număr mare de tabele și de aceea există o nevoie constantă de a se alătura acestor tabele multiple bazate pe relații logice între ele. Există patru tipuri de bază de Join-uri în SQL Server-Inner – Outer (stânga, dreapta, full), Self și cross join. Pentru a obține o imagine de ansamblu rapidă a tuturor acestor Join-uri, aș recomanda să parcurgeți acest link, SQL Join types overview și tutorial.,

Acest articol vizează totul despre inner Join în SQL Server, așa că haideți să ne îndreptăm spre el.

definiția SQL inner Join

inner Join clauză în SQL Server creează un nou tabel (nu fizic) prin combinarea rânduri care au valori de potrivire în două sau mai multe tabele. Acest join se bazează pe o relație logică (sau un câmp comun) între tabele și este utilizat pentru a prelua datele care apar în ambele tabele.

presupunem că avem două tabele, Tabelul A și Tabelul B, pe care am dori să le alăturăm folosind SQL inner Join., Rezultatul acestei asocieri va fi un nou set de rezultate care returnează rândurile care se potrivesc în ambele tabele. Partea de intersecție în negru de mai jos arată datele preluate folosind inner Join în SQL Server.

SQL Server inner Join sintaxa

mai jos este sintaxa de bază a inner Join.

selectați Column_list
din TABLE1
inner JOIN TABLE2
pe Table1.ColName = Table2.ColName

inner Join sintaxa compară practic rânduri de Table1 cu Table2 pentru a verifica dacă ceva se potrivește în funcție de condiția prevăzută în clauza ON., Când condiția Join este îndeplinită, se returnează rândurile potrivite în ambele tabele cu coloanele selectate în clauza SELECT.

clauza SQL inner Join este aceeași cu clauza Join și funcționează la fel dacă nu specificăm tipul (INNER) în timp ce folosim clauza Join. Pe scurt, inner Join este cuvântul cheie implicit pentru Join și ambele pot fi folosite interschimbabil.

notă – vom folosi cuvântul cheie „interior” Alăturați-vă în acest articol pentru mai multă claritate. Puteți să o omiteți în timp ce scrieți întrebările dvs. și puteți utiliza doar „Alăturați-vă”.,să încercăm să înțelegem conceptul de inner Join printr-un eșantion de date interesant care se ocupă de o companie de Pizza și de distribuția sa de alimente. Voi crea două tabele „PizzaCompany” de primă masă care gestionează diferite ramuri ale magazinelor de Pizza în câteva orașe și „alimente” de masă care stochează detaliile de distribuție a alimentelor în aceste companii. Puteți executa codul de mai jos pentru a crea și popula date în aceste două tabele. Toate aceste date sunt ipotetice și puteți crea în oricare dintre bazele de date existente.,

așa arată datele din tabelul PizzaCompany:

să creăm și să populăm masa de alimente acum. CompanyID în acest tabel este cheia străină care se referă la cheia primară a tabelului PizzaCompany creat mai sus.

următorul tabel arată datele din tabelul de alimente. Acest tabel stochează informații cum ar fi unitățile vândute pentru fiecare produs alimentar și, de asemenea, priza de pizza (CompanyId) care o livrează.,

Acum, dacă ne-ar dori pentru a vedea obiecte și, de asemenea, unități vândute de către fiecare companie de pizza, putem combina aceste două tabele cu ajutorul unui inner join clauza de a fi folosit pe teren CompanyId (în cazul nostru acest împărtășește o cheie externă relație).

1
2
3
4

SELECTAȚI pz.Companie, pz.Numele companiei, pz.CompanyId ca PizzaCompanyId, f.,CompanyID CA FoodsCompanyId, f.ItemName, f.UnitsSold
DE la PizzaCompany pz
INNER JOIN produse Alimentare f
PE pz.CompanyId = f.CompanyId

mai Jos este rezultatul de mai sus Inner Join SQL de interogare. Pentru fiecare rând în PizzaCompany de masă, inner Join compară și găsește rândurile de potrivire în produsele alimentare de masă și returnează toate rândurile de potrivire așa cum se arată mai jos. Și dacă observați, CompanyId = 5 este exclus din rezultatul interogării, deoarece nu se potrivește în tabelul Foods.,

Cu ajutorul rezultatul de mai sus, putem face din elemente și, de asemenea, numărul de elemente livrate de pizza de desfacere în diferite orașe. De exemplu, Dominos a făcut o livrare de 7 Breadsticks și 11 Pizza medie în Los Angeles.

SQL Inner Join pe trei tabele

Să exploreze mai mult în aceasta se alăture și să presupunem că trei parcuri (se pare ca vara) ia deschis în stat și aceste parcuri externalizeze alimentare de la pizza puncte de vânzare menționate în tabelul de PizzaCompany.,

voi crea rapid un parc acvatic de masă și voi încărca câteva date arbitrare în el, așa cum se arată mai jos.

și mai jos este rezultatul acestui tabel.

după cum se spune, imaginea valorează o mie de cuvinte. Să vedem rapid diagrama bazei de date a acestor trei tabele cu relațiile lor pentru a le înțelege mai bine.

acum vom include acest al treilea tabel în clauza SQL inner Join pentru a vedea cum va afecta setul de rezultate., Conform datelor din tabelul WaterPark, cele trei waterparks au externalizat alimentele de la toate companiile de Pizza, dar Pizzeria (Id=6) și chuck E cheese (Id = 7). Executați codul de mai jos pentru a vedea toată distribuția alimentelor pe parcurile de apă de către prizele de Pizza.

1
2
3
4
5
6

SELECTAȚI pz.Companie, pz.Companie, pz.Nume companie, f. Nume articol, f.,UnitsSold,
w.WaterParkLocation
DE la PizzaCompany pz
INNER JOIN produse Alimentare f PE pz.CompanyId = f. CompanyId
interior Alăturați-vă WaterPark w pe w.CompanyId = pz.Compania
comanda de pz.CompanyId

pe Baza CompanyId, SQL Inner Join meciuri rânduri în ambele tabele, PizzaCompany (Tabelul 1) și Alimente (Tabelul 2) și, ulterior, se pare pentru un meci în WaterPark (Tabelul 3) pentru a reveni rânduri., După cum se arată mai jos, cu adăugarea inner join pe WaterPark, CompanyId (6,7 (în afară de 5)) sunt de asemenea excluse din rezultatul final stabilit ca condiție w.CompanyId = pz.CompanyId nu este mulțumit pentru ID-uri (6,7). Acesta este modul în care SQL inner join ajută la returnarea anumitor rânduri de date din mai multe tabele.

să săpăm în SQL inner Join mai mult cu câteva clauze T-SQL.

folosind unde cu inner Join

putem filtra înregistrările pe baza unei condiții specificate atunci când SQL inner Join este utilizat cu o clauză WHERE., Să presupunem că am dori să obținem rândurile în care unitățile vândute au fost mai mult de 6.

în următoarea interogare, clauza WHERE este adăugată pentru a extrage rezultate cu o valoare mai mare de 6 pentru unitățile vândute.

1
2
3
4
5

SELECTAȚI pz.Companie, pz.Companie, pz.CompanyName,f.ItemName, f.UnitsSold
DE la PizzaCompany pz
INNER JOIN produse Alimentare f PE pz.,CompanyId = f.CompanyId
UNDE f.UnitsSold > 6
COMANDA DE pz.CompanyCity

Executa codul de mai sus în SSMS pentru a vedea mai jos rezultatul. Patru astfel de înregistrări sunt returnate de această interogare.

Folosind Group By cu Inner Join

Inner Join SQL ne permite să folosim clauza Group by, împreună cu funcții agregate pentru grupul rezultatul set de una sau mai multe coloane., Grupul de lucrări convențional cu interior se alăture pe rezultatul final a revenit după aderarea la două sau mai multe tabele. Dacă nu sunteți familiarizat cu grupa de clauză în SQL, aș sugera trece prin acest lucru pentru a avea o înțelegere rapidă a acestui concept. Mai jos este codul care face uz de grup de clauza cu Join interior.

1
2
3
4
5

SELECTAȚI pz.Companie, pz.,CompanyName, SUM(f.UnitsSold) CA TotalQuantitySold
DE la PizzaCompany pz
INNER JOIN produse Alimentare f PE pz.CompanyId = f. CompanyId
grup de pz.Companie, pz.Numele companiei
comanda de pz.Compania

aici, intenționăm să obținem totalul articolelor vândute de fiecare companie de Pizza prezentă în oraș. După cum puteți vedea mai jos, rezultatul agregat în coloana „totalquantitysold” ca 18 (7+11) și 9 (6+3) Pentru Los Angeles și, respectiv, San Diego este calculat.,

O scurtă notă pe Equi și Theta Join

Înainte de a încheia acest articol, hai du-te repede peste termeni, un SQL developer poate auzi sporadic – Equi și Theta Join.

Equi Join

după cum sugerează și numele, equi join conține un operator de egalitate ‘ = ‘ fie în clauza Join, fie în condiția WHERE. SQL interior, stânga, dreapta sunt toate EQUI se alătură atunci când ‘=’ operatorul este utilizat ca un operator de comparație., De obicei, atunci când există o mențiune de SQL inner Join, este considerat ca un interior Equi Join, într-o situație neobișnuită numai, operatorul de egalitate nu este utilizat.

pentru a face lucrurile mai ușoare, am de gând să se refere la AdventureWorksDW2017 bază de date eșantion și foc o interogare împotriva tabele existente pentru a demonstra cum arată EQUI join.

1
2
3
4

SELECTAȚI e.EmployeeKey, e.,FirstName, e. Title, e.HireDate,
fs.SalesAmountQuota DE DimEmployee e
INNER JOIN FactSalesQuota fs
PE e.EmployeeKey = fs.EmployeeKey

Theta Join (Non-equi se alăture)

Non-equi se alăture este de fapt opusul equi-join și este folosit atunci când vom adera la o altă condiție decât ‘=’ operator. Acest tip este rar folosit în practică., 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

Concluzie

sper ca acest articol pe SQL Inner Join’ oferă o abordare ușor de înțeles pentru unul dintre cele mai importante și frecvent utilizate clauze – ‘Inner join’ în SQL Server pentru a combina mai multe tabele. În cazul în care aveți întrebări, vă rugăm să nu ezitați să întrebați în secțiunea de comentarii de mai jos.,

Pentru a continua învățarea pe SQL se Alătură, puteți să consultați mai jos mesaje:

  • SQL EXTERIOR ALĂTURA imagine de ansamblu și exemple
  • SQL se Alăture introducere și privire de ansamblu
  • Autor
  • Mesajele Recente
Gauri este un SQL Server Profesionale și a 6+ ani de experiență de lucru cu multinaționale globale de consultanță și organizații de tehnologie., Ea este foarte pasionat de lucru pe subiecte SQL Server, cum ar fi Azure SQL Database, SQL Server Reporting Services, R, Python, putere BI, motor de baze de date, etc. Are ani de experiență în documentația tehnică și este pasionată de tehnologia de creație.
are o experiență profundă în proiectarea soluțiilor de date și analize și asigurarea stabilității, fiabilității și performanței acestora. De asemenea, este certificată în SQL Server și a trecut certificări precum 70-463: implementarea depozitelor de date cu Microsoft SQL Server.,
Vezi toate posturile de Gauri Mahajan

Ultimele posturi de Gauri Mahajan (vezi toate)
  • de a Explora Azure Servicii de Analiză a Modelului și a Datelor – 4 februarie 2021
  • Obtinerea a început cu Azure Servicii de Analiză – ianuarie 13, 2021
  • se Conecteze Azure Databricks date Power BI Desktop – 1 iunie, în 2020,