SQLShack (Svenska)

I den här artikeln lär vi oss SQL flera sammanfogningskoncept och förstärker våra lärdomar med ganska enkla exempel, som förklaras med illustrationer. I relationsdatabaser lagras data i tabeller. Utan tvekan, och oftast, behöver vi en resultatsats som bildas som kombinerar data från flera tabeller. Fogarna gör det möjligt för oss att kombinera data från två eller flera tabeller så att vi kan gå med i data i tabellerna så att vi enkelt kan hämta data från flera tabeller. Du kan fråga dig själv hur många olika typer av kopplingar som finns i SQL Server. Svaret är att det finns fyra huvudtyper av kopplingar som finns i SQL Server. Först och främst kommer vi att kort beskriva dem med Venn-diagramillustrationer:

  • Inre sammanfogning returnerar de rader som matchar i båda tabellerna

  • Vänster koppling returnerar alla rader från vänster tabell

  • Right join returnerar alla rader från höger tabell

  • Fullständig koppling returnerar hela rader från båda tabellerna

Om du saknar kunskap om SQL-kopplingskonceptet i SQL Server kan du se översikten över SQL-anslutningstyper och artikel om självstudier.

Efter den här korta förklaringen om SQL-kopplingstyperna går vi igenom flera kopplingar.

Vad är SQL multipla kopplingar?

Flera kopplingar kan beskrivas enligt följande; multipel koppling är en fråga som innehåller samma eller olika kopplingstyper, som används mer än en gång. Således får vi förmågan att kombinera flera datatabeller för att lösa relationsdatabasfrågor.

Exempelscenario

Green-Tree-företaget lanserade en ny kampanj för nyåret och gjorde olika erbjudanden till sina onlinekunder. Som ett resultat av deras kampanj lyckades de konvertera några erbjudanden till försäljning. I följande exempel kommer vi att avslöja information om kampanjdatan för det nya året för Green-Tree-företaget.

Företaget lagrar dessa kampanjdatadetaljer i följande tabeller. Nu kommer vi att skapa dessa tabeller genom följande fråga och fylla i dem med några dummydata:

Hur SQL multipel-anslutningar fungerar?

Affärsproblem: Vilka kunder var intresserade av det här nyåret kampanj?

För att svara på den här frågan måste vi ta reda på de matchade raderna för alla bord eftersom vissa kunder inte fick ett e-posterbjudande och vissa erbjudanden kunde inte konverteras till en försäljning. Följande Venn-diagram hjälper oss att räkna ut de matchade raderna som vi behöver. Kort sagt bör resultatet av denna fråga vara de korsande raderna i alla tabeller i frågan. Det gråfärgade området specificerar dessa rader i Venn-diagrammet:

SQL-multipel-anslutningsmetoden hjälper oss att gå med onlinekunder , order och försäljningstabeller. Som visas i Venn-diagrammet måste vi matcha rader i alla tabeller. Av denna anledning kommer vi att kombinera alla tabeller med en inre kopplingssats. Följande fråga returnerar en resultatuppsättning som vi önskar och svarar på frågan:

1
2
3
4
5
6
7
8

VÄLJ kundnamn, kundanpassad, anpassad post, salestotal
FRÅN onlinecustomers AS oc
INNER JOIN
order AS o
ON oc.customerid = o.customerid
INNRE GÅ MED
försäljning AS s
PÅ o.orderId = s.orderId

Först analyserar vi frågan. En klausul om inre koppling som finns mellan onlinekunder och ordertabeller härledde de matchade raderna mellan dessa två tabeller. Den andra inre kopplingsklausulen som kombinerar försäljningstabellen härledde matchade rader från föregående resultatuppsättning. Följande färgade tabellillustration hjälper oss att förstå de förenade tabellens datamatchning i frågan. De gulfärgade raderna anger matchade data mellan onlinekunder och beställningar. Å andra sidan finns endast de blåfärgade raderna i försäljningstabellerna så frågeresultatet blir blåfärgade rader:

Resultatet av frågan kommer att se ut så här:

Användning av olika anslutningstyper i SQL-flera kopplingar

Affärsproblem: Vilka erbjudanden kunde inte konverteras till en försäljning?

Vi kan använda olika typer av kopplingar i en enskild fråga så att vi kan övervinna olika relationsdatabasproblem.I det här exemplet behöver vi alla rader i ordertabellen, som matchas med onlinecustomers-tabeller. Å andra sidan finns dessa rader inte i försäljningstabellen. Följande Venn-diagram hjälper oss att räkna ut de matchade raderna som vi behöver. Det gråfärgade området anger rader som kommer att visas i frågan:

I det första steget bör vi kombinera onlinekunderna och beställningstabellerna genom den inre kopplingsklausulen eftersom inre koppling returnerar alla matchade rader mellan onlinekunder och ordertabeller. I det andra steget kombinerar vi beställningstabellen till försäljningstabellen genom vänster koppling och filtrerar sedan nollvärdena eftersom vi måste eliminera raderna som lagras av försäljningstabellen:

1
2
3
4
5
6
7
8
9

VÄLJ kundnamn, customercity, customermail, ordertotal, salestotal
FRÅN onlinecustomers AS c
INNER JOIN
orders AS o
PÅ c.customerid = o.customerid
VÄNSTER JOIN
försäljning AS s
PÅ o.orderId = s.orderId
VAR s.salesId IS NULL

Resultatet av frågan kommer att se ut så här:

Quiz

Q fråga: Vänligen generera rätt fråga enligt nedanstående Venn-diagram.

Svar: Som vi lärde oss tillåter hela kopplingen oss att returnera alla rader från de kombinerade tabellerna. Den besvarade frågan kommer att vara som följande:

1
2
3
4
5
6
7
8

VÄLJ kundnamn, customercity, customermail, ordertotal, salestotal
FRÅN onlinecustomers AS c
FULL JOIN
beställer AS o
PÅ c.customerid = o.customerid
FULL JOIN
försäljning AS s
PÅ o.orderId = s.orderId

Slutsats

I den här artikeln fokuserade vi på tillvägagångssättet för SQL multipelanslutningar och lärde oss det med detaljerade exempel. Flera sammanfogningar gör det möjligt för oss att kombinera mer än två tabeller så att vi kan övervinna olika problem i relationsdatabassystemet. Dessutom såg vi hur vi kunde använda olika kopplingstyper i en enda fråga.

  • Författare
  • Senaste inlägg
Esat Erkec är en SQL Server-professionell som började sin karriär för 8+ år sedan som mjukvaruutvecklare. Han är en SQL Server Microsoft Certified Solutions Expert.
Det mesta av hans karriär har fokuserats på SQL Server Databasadministration och utveckling. Hans nuvarande intressen ligger i databasadministration och Business Intelligence. Du hittar honom på LinkedIn.
Visa alla inlägg av Esat Erkec

Senaste inlägg av Esat Erkec (se alla)
  • Komma igång med SQL-programmering – 3 februari 2021
  • Hur man läser en körning plan med alla detaljer – 28 januari 2021
  • SQL SELECT TOP-översikt och exempel – 25 januari 2021

Leave a Reply

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *