PostgreSQL Joins

Samenvatting: in deze tutorial leert u over verschillende soorten PostgreSQL joins, waaronder inner join, left join, right join, en full outer join.

PostgreSQL join wordt gebruikt om kolommen uit één (self-join) of meer tabellen te combineren op basis van de waarden van de gemeenschappelijke kolommen tussen de gerelateerde tabellen. De gemeenschappelijke kolommen zijn meestal de primary key kolommen van de eerste tabel en foreign key kolommen van de tweede tabel.

PostgreSQL ondersteunt inner join, left join, right join, full outer join, cross join, natural join, en een speciale vorm van join genaamd self-join.

Opzetten van voorbeeldtabellen

Voorstel dat u twee tabellen hebt genaamd basket_a en basket_b waarin fruit wordt opgeslagen:

De tabellen hebben een aantal gemeenschappelijke vruchten zoals apple en orange.

Het volgende statement retourneert gegevens uit de basket_a tabel:

En de volgende verklaring retourneert gegevens uit de basket_b tabel:

PostgreSQL inner join

Het volgende statement voegt de eerste tabel samen (basket_a) met de tweede tabel (basket_b) door de waarden in de fruit_a en fruit_b kolommen te matchen:

De inner join bekijkt elke rij in de eerste tabel (basket_a). Het vergelijkt de waarde in de fruit_a kolom met de waarde in de fruit_b kolom van elke rij in de tweede tabel (basket_b). Als deze waarden gelijk zijn, maakt de inner join een nieuwe rij die kolommen uit beide tabellen bevat en voegt deze nieuwe rij toe aan de resultatenset.

Het volgende Venn-diagram illustreert de inner join:

PostgreSQL linkse join

De volgende statement gebruikt de left join clause om de basket_a tabel te joinen met de basket_b tabel. In de context van de left join wordt de eerste tabel de linkertabel genoemd en de tweede tabel de rechtertabel.

De left join begint met het selecteren van gegevens uit de linkertabel. Hij vergelijkt de waarden in de kolom fruit_a met de waarden in de kolom fruit_b in de tabel basket_b.

Als deze waarden gelijk zijn, maakt de linkse join een nieuwe rij die kolommen van beide tabellen bevat en voegt deze nieuwe rij toe aan de resultatenset. (zie rij #1 en #2 in de resultatenset).

In het geval dat de waarden niet gelijk zijn, maakt de linker join ook een nieuwe rij die kolommen uit beide tabellen bevat en voegt deze toe aan de resultatenset. De kolommen van de rechter tabel (basket_b) worden echter met null gevuld. (zie de rijen #3 en #4 in de resultatenset).

Het volgende Venn-diagram illustreert de linkse join:

Om rijen uit de linker tabel te selecteren die geen overeenkomende rijen in de rechter tabel hebben, gebruikt u de linker join met een WHERE-clausule. Bijvoorbeeld:

De uitvoer is:

Merk op dat de LEFT JOIN hetzelfde is als de LEFT OUTER JOIN, zodat u ze door elkaar kunt gebruiken.

Het volgende Venn-diagram illustreert de linkse join die rijen uit de linkertabel retourneert die geen overeenkomende rijen uit de rechtertabel hebben:

PostgreSQL rechtse join

De rechtse join is een omgekeerde versie van de linkse join. De right join begint met het selecteren van gegevens uit de rechter tabel. Het vergelijkt elke waarde in de fruit_b kolom van elke rij in de rechter tabel met elke waarde in de fruit_a kolom van elke rij in de fruit_a tabel.

Als deze waarden gelijk zijn, creëert de right join een nieuwe rij die kolommen uit beide tabellen bevat.

In het geval dat deze waarden niet gelijk zijn, creëert de right join ook een nieuwe rij die kolommen uit beide tabellen bevat. De kolommen in de linker tabel worden echter gevuld met NULL.

Het volgende statement gebruikt de right join om de basket_a tabel te verbinden met de basket_b tabel:

Hier is de uitvoer:

Het volgende Venn-diagram illustreert de juiste join:

Op dezelfde manier kunt u rijen uit de rechtertabel krijgen die geen overeenkomende rijen uit de linkertabel hebben door als volgt een WHERE-clausule toe te voegen:

De RIGHT JOIN en RIGHT OUTER JOIN zijn hetzelfde daarom kun je ze door elkaar gebruiken.

Het volgende Venn-diagram illustreert de right join die rijen uit de rechtertabel retourneert die geen overeenkomende rijen in de linkertabel hebben:

PostgreSQL full outer join

De full outer join of volledige join geeft een resultatenset die alle rijen uit zowel de linker- als de rechtertabel bevat, met de overeenkomende rijen van beide kanten indien beschikbaar. In het geval er geen match is, worden de kolommen van de tabel met NULL gevuld.

Uitvoer:

Het volgende Venn-diagram illustreert de volledige outer join:

Om rijen in een tabel terug te geven die geen overeenkomende rijen in de andere tabel hebben, gebruikt u de volledige join met een WHERE clausule zoals deze:

Hier is het resultaat:

Het volgende Venn-diagram illustreert de full outer join die rijen uit een tabel retourneert die niet de corresponderende rijen in de andere tabel hebben:

De volgende afbeelding toont alle PostgreSQL joins die we tot nu toe hebben besproken met de gedetailleerde syntaxis:

In deze tutorial hebt u geleerd hoe u verschillende soorten PostgreSQL joins kunt gebruiken om gegevens uit meerdere gerelateerde tabellen te combineren.

  • Was deze handleiding nuttig?
  • Ja/Nee

Geef een reactie

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