SQLShack

In dit artikel zullen we de SQL leren multiple joins-concept en versterken onze lessen met vrij eenvoudige voorbeelden, die worden uitgelegd met illustraties. In relationele databases worden gegevens opgeslagen in tabellen. Zonder twijfel, en meestal, hebben we een resultaatset nodig die wordt gevormd door gegevens uit verschillende tabellen te combineren. Met de joins kunnen we gegevens uit twee of meer tabellen combineren, zodat we gegevens van de tabellen kunnen samenvoegen, zodat we gemakkelijk gegevens uit meerdere tabellen kunnen ophalen. U kunt zich afvragen hoeveel verschillende typen join er in SQL Server bestaan. Het antwoord is dat er vier hoofdtypen joins bestaan in SQL Server. Allereerst zullen we ze kort beschrijven met behulp van Venn-diagramillustraties:

  • Inner join retourneert de rijen die overeenkomen in beide tabellen

  • Left join retourneert alle rijen van de linkertabel

  • Right join retourneert alle rijen uit de rechter tabel

  • Full join retourneert hele rijen van beide tabellen

Als je geen kennis hebt over het SQL-joins-concept in de SQL Server, kunt u het overzicht van SQL-joinsoorten en het tutorialartikel bekijken.

Na deze korte uitleg over de SQL-joins-typen zullen we de meervoudige joins doornemen. >

Wat zijn SQL multiple joins?

Meerdere joins kunnen als volgt worden beschreven; multiple join is een query die dezelfde of verschillende join-typen bevat, die meer dan eens worden gebruikt. Zo krijgen we de mogelijkheid om meerdere gegevenstabellen te combineren om relationele databaseproblemen op te lossen.

Voorbeeldscenario

Green-Tree bedrijf lanceerde een nieuwe campagne voor het nieuwe jaar en deed verschillende aanbiedingen aan zijn online klanten. Als resultaat van hun campagne slaagden ze erin om sommige aanbiedingen om te zetten in verkopen. In de volgende voorbeelden zullen we de details van de campagnegegevens voor het nieuwe jaar van het Green-Tree-bedrijf onthullen.

Het bedrijf slaat deze details van campagnegegevens op in de volgende tabellen. Nu gaan we deze tabellen maken met de volgende query en ze vullen met enkele dummy-gegevens:

Hoe werken meerdere SQL-joins?

Zakelijk probleem: welke klanten waren geïnteresseerd in dit nieuwe jaar campagne?

Om deze vraag te beantwoorden, moeten we de overeenkomende rijen voor alle tabellen vinden, omdat sommige klanten geen aanbieding per e-mail hebben ontvangen en sommige aanbiedingen niet konden worden omgezet in een verkoop. Het volgende Venn-diagram helpt ons om de overeenkomende rijen te vinden die we nodig hebben. Kortom, het resultaat van deze query zou de elkaar kruisende rijen van alle tabellen in de query moeten zijn. Het grijsgekleurde gebied specificeert deze rijen in het Venn-diagram:

De SQL multiple joins-benadering zal ons helpen om online klanten aan te sluiten , bestellingen en verkooptabellen. Zoals weergegeven in het Venn-diagram, moeten we rijen van alle tabellen matchen. Om deze reden zullen we alle tabellen combineren met een inner join-clausule. De volgende zoekopdracht levert een resultaatset op die van ons gewenst is en beantwoordt de vraag:

1
2
3
4
5
6
7
8

SELECTEER klantnaam, klantspecificatie, klantspecifiek, verkoopotaal
FROM online klanten AS oc
INNER JOIN
bestellingen AS o
OP oc.customerid = o.customerid
INNER JOIN
sales AS s
OP o.orderId = s.orderId

Eerst zullen we de zoekopdracht analyseren. Een inner join-clausule die tussen onlinecustomers- en ordertabellen staat, heeft de overeenkomende rijen tussen deze twee tabellen afgeleid. De tweede inner join-clausule die de verkooptabel combineert, heeft de overeenkomende rijen afgeleid van de vorige resultatenset. De volgende afbeelding van gekleurde tabellen zal ons helpen de gegevens van de samengevoegde tabellen in de query te begrijpen. De geel gekleurde rijen specificeren gematchte gegevens tussen online klanten en bestellingen. Aan de andere kant bestaan alleen de blauwgekleurde rijen in de verkooptabellen, dus het resultaat van de zoekopdracht zijn blauwgekleurde rijen:

Het resultaat van de zoekopdracht ziet er als volgt uit:

Verschillende typen joins gebruiken in SQL meerdere joins

Zakelijk probleem: welke aanbiedingen konden niet worden omgezet in een verkoop?

We kunnen de verschillende soorten joins in een enkele zoekopdracht gebruiken, zodat we verschillende relationele databaseproblemen kunnen oplossen.In dit voorbeeld hebben we alle rijen van de besteltabel nodig, die zijn gematcht met online klantentabellen. Aan de andere kant bestaan deze rijen niet in de verkooptabel. Het volgende Venn-diagram helpt ons om de overeenkomende rijen te vinden die we nodig hebben. Het grijsgekleurde gebied geeft rijen aan die de uitvoer van de zoekopdracht zullen zijn:

In de eerste stap moeten we combineren de onlinecustomers- en ordertabellen via de inner join-clausule omdat inner join alle overeenkomende rijen tussen onlinecustomers en ordertabellen retourneert. In de tweede stap combineren we de besteltabel met de verkooptafel via de linkse join en filteren we de null-waarden omdat we de rijen moeten verwijderen die zijn opgeslagen door de verkooptabel:

1
2
3
4
5
6
7
8
9

SELECTEER klantnaam, klantgerichtheid, klantspecifiek, ordertotaal, verkoopstotaal
VAN online klanten AS c
BINNENKLANTEN
bestellingen AS o
OP c.customerid = o.customerid
LINKS AANMELDEN
verkoop AS s
AAN o.orderId = s.orderId
WAAR s.salesId IS NULL

Het resultaat van de zoekopdracht zal zien er als volgt uit:

Quiz

V uestion: Genereer de juiste query volgens het onderstaande Venn-diagram.

Antwoord: Zoals we hebben geleerd, staat de volledige join toe ons om alle rijen uit de gecombineerde tabellen te retourneren. De beantwoorde vraag zal er als volgt uitzien:

1
2
3
4
5
6
7
8

SELECTEER klantnaam, klantnaam, klantspecifieke post, ordertotaal, verkoopotaal
VAN onlineklanten AS c
VOLLEDIG AANMELDEN
bestellingen ALS o
OP c.customerid = o.customerid
VOLLEDIG AANMELDEN
verkoop AS s
AAN o.orderId = s.orderId

Conclusie

In dit artikel hebben we ons geconcentreerd op de SQL multiple joins-benadering en deze geleerd met gedetailleerde voorbeelden. Meerdere joins stellen ons in staat om meer dan twee tabellen te combineren, zodat we verschillende problemen in het relationele databasesysteem kunnen oplossen. Verder hebben we gezien hoe we verschillende typen joins in één query kunnen gebruiken.

  • Auteur
  • Recente berichten
Esat Erkec is een SQL Server-professional die zijn carrière 8+ jaar geleden begon als softwareontwikkelaar. Hij is een SQL Server Microsoft Certified Solutions Expert.
Het grootste deel van zijn carrière was gericht op SQL Server-databasebeheer en -ontwikkeling. Zijn huidige interesses liggen bij databasebeheer en Business Intelligence. Je kunt hem vinden op LinkedIn.
Bekijk alle berichten van Esat Erkec

Laatste berichten door Esat Erkec (bekijk alle)
  • Aan de slag met SQL-programmering – 3 februari 2021
  • Hoe een uitvoering te lezen plan met alle details – 28 januari 2021
  • SQL SELECT TOP statement overzicht en voorbeelden – 25 januari 2021

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *