SQLShack (Norsk)

I denne artikkelen vil vi lære SQL flere sammenføyningskonsepter og forsterker læringene våre med ganske enkle eksempler, som er forklart med illustrasjoner. I relasjonsdatabaser lagres data i tabeller. Uten tvil, og mesteparten av tiden, trenger vi et resultatsett som dannes ved å kombinere data fra flere tabeller. Sammenføyningene lar oss kombinere data fra to eller flere tabeller slik at vi er i stand til å bli med data i tabellene slik at vi enkelt kan hente data fra flere tabeller. Du kan spørre deg selv hvor mange forskjellige typer tilknytninger som finnes i SQL Server. Svaret er at det er fire hovedtyper av sammenføyninger som finnes i SQL Server. Først og fremst vil vi kort beskrive dem ved hjelp av Venn-diagramillustrasjoner:

  • Inner join returnerer radene som samsvarer i begge tabeller

  • Venstre sammenføyning returnerer alle rader fra venstre tabell

  • Right join returnerer alle radene fra høyre tabell

  • Full sammenføyning returnerer hele rader fra begge tabeller

Hvis du mangler kunnskap om SQL join-konseptet i SQL Server, kan du se oversikten over SQL Join-typer og opplæringsartikkelen.

Etter denne korte forklaringen om SQL-join-typene, vil vi gå gjennom flere joins.

Hva er SQL flere sammenføyninger?

Flere sammenføyninger kan beskrives som følger; multiple join er et spørsmål som inneholder de samme eller forskjellige join-typene, som brukes mer enn en gang. Dermed får vi muligheten til å kombinere flere datatabeller for å løse problemer med relasjonelle databaser.

Eksempelscenario

Green-Tree-selskapet lanserte en ny kampanje for nyttår og ga forskjellige tilbud til sine online kunder. Som et resultat av kampanjen, lyktes de i å konvertere noen tilbud til salg. I de følgende eksemplene vil vi avdekke detaljene for kampanjedata for nyttår for Green-Tree-selskapet.

Selskapet lagrer disse kampanjedatadetaljene i tabellene nedenfor. Nå vil vi lage disse tabellene gjennom følgende spørring og fylle dem ut med noen dummy-data:

Hvordan SQL multiple-sammenføyninger fungerer?

Forretningsproblem: Hvilke kunder var interessert i dette nyttåret kampanje?

For å kunne svare på dette spørsmålet, må vi finne de matchede radene for alle tabellene fordi noen kunder ikke mottok et e-posttilbud, og noen tilbud kunne ikke konverteres til et salg. Følgende Venn-diagram vil hjelpe oss med å finne ut de matchede radene vi trenger. Kort sagt, resultatet av denne spørringen skal være de kryssende radene i alle tabeller i spørringen. Det gråfargede området spesifiserer disse radene i Venn-diagrammet:

Tilnærmingen til SQL multiple JOINS vil hjelpe oss å bli med online-kunder , ordrer og salgstabeller. Som vist i Venn-diagrammet, må vi matche rader av alle tabeller. Av denne grunn vil vi kombinere alle tabeller med en indre sammenføyningsklausul. Følgende spørsmål returnerer et resultatsett som er ønsket av oss og vil svare på spørsmålet:

1
2
3
4
5
6
7
8

VELG kundenavn, kundeservice, tilpasset mail, salestotal
FRA onlinecustomers AS oc
INNER JOIN
orders AS o
ON oc.customerid = o.customerid
INNRE MEDLEM
salg AS s
PÅ o.orderId = s.orderId

Først vil vi analysere spørringen. En indre sammenføyningsklausul som er mellom onlinekunder og ordretabeller, avledet de matchede radene mellom disse to tabellene. Den andre indre sammenføyningsklausulen som kombinerer salgstabellen, avledet de samsvarende radene fra forrige resultatsett. Følgende illustrasjon av fargede tabeller hjelper oss å forstå de sammenføyde tabellens datatilpasning i spørringen. De gulfargede radene angir samsvarende data mellom onlinekunder og bestillinger. På den annen side er det bare de blå fargede radene i salgstabellene, så søkeresultatet blir blåfargede rader:

Resultatet av spørringen vil se slik ut:

Forskjellige sammenkoblingstyper bruk i SQL flere sammenføyninger

Forretningsproblem: Hvilke tilbud kan ikke konverteres til salg?

Vi kan bruke de forskjellige typene koblinger i et enkelt spørsmål, slik at vi kan overvinne forskjellige relasjonelle databaseproblemer.I dette eksemplet trenger vi alle rader i ordretabellen, som er matchet med online-kundetabeller. På den annen side finnes ikke disse radene i salgstabellen. Følgende Venn-diagram vil hjelpe oss med å finne ut de matchede radene vi trenger. Det gråfargede området indikerer rader som vil være resultatet av spørringen:

I det første trinnet, bør vi kombinere onlinekunder og ordretabeller gjennom den indre sammenføyningsparagrafen fordi indre sammenføyning returnerer alle de matchede radene mellom onlinekunder og ordretabeller. I det andre trinnet vil vi kombinere ordretabellen til salgstabellen gjennom venstre sammenføyning og deretter filtrere nullverdiene fordi vi trenger å eliminere radene som er lagret av salgstabellen:

1
2
3
4
5
6
7
8
9

VELG kundenavn, customercity, customermail, ordertotal, salestotal
FRA onlinecustomers AS c
INNER JOIN
orders AS o
PÅ c.customerid = o.customerid
VENSTRE JOIN
salg AS s
PÅ o.orderId = s.orderId
HVOR s.salesId IS NULL

Resultatet av spørringen vil se slik ut:

Quiz

Q spørsmål: Vennligst generer riktig spørring i henhold til nedenstående Venn-diagram.

Svar: Som vi fikk vite, tillater full sammenkobling oss for å returnere alle rader fra de kombinerte tabellene. Det besvarte spørsmålet vil være som følger:

1
2
3
4
5
6
7
8

VELG kundenavn, customercity, customermail, ordertotal, salestotal
FRA onlinekunder AS c
FULL JOIN
bestiller AS o
PÅ c.customerid = o.customerid
FULL BLI MED
salg AS s
PÅ o.orderId = s.orderId

Konklusjon

I denne artikkelen fokuserte vi på tilnærmingen til SQL multiple join og lærte den med detaljerte eksempler. Flere sammenføyninger lar oss kombinere mer enn to tabeller, slik at vi kan overvinne forskjellige problemer i det relasjonelle databasesystemet. Videre så vi hvordan vi kunne bruke forskjellige sammenføyningstyper i ett spørsmål.

  • Forfatter
  • Nylige innlegg
Esat Erkec er en SQL Server-profesjonell som begynte sin karriere for over 8 år siden som programvareutvikler. Han er en SQL Server Microsoft Certified Solutions Expert.
Det meste av karrieren hans har vært fokusert på SQL Server Database Administration and Development. Hans nåværende interesser er databaseadministrasjon og Business Intelligence. Du finner ham på LinkedIn.
Vis alle innlegg av Esat Erkec

Siste innlegg av Esat Erkec (se alle)
  • Komme i gang med SQL-programmering – 3. februar 2021
  • Hvordan lese en utførelse plan med alle detaljer – 28. januar 2021
  • SQL SELECT TOP-oversikt og eksempler – 25. januar 2021

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *