Summary: I denne tutorial lærer du, hvordan du bruger RIGHT OUTER JOIN
i Oracle til at sammenføje to eller flere tabeller.
Oversigt over RIGHT OUTER JOIN i Oracle
Sæt, at vi har to tabeller T1
og T2
, så viser følgende erklæring, hvordan du føjer disse to tabeller ved hjælp af RIGHT OUTER JOIN
-klausulen i Oracle:
I denne erklæring er T1
og T2
henholdsvis den venstre og højre tabel.
Nøgleordet OUTER
er valgfrit, derfor er RIGHT OUTER JOIN
og RIGHT JOIN
det samme.
Her er, hvordan RIGHT OUTER JOIN
fungerer.
Hver række fra tabellen T1
sammenlignes med rækker fra tabellen T2
:
- Hvis et par rækker opfylder join-prædikatet, kombineres kolonneværdierne i begge rækker til en resultatrække, som derefter indgår i resultatmængden.
- Hvis en række i
T2
-tabellen ikke passer til nogen række iT1
-tabellen, kombineres kolonneværdierne fra rækken iT2
-tabellen med en NULL-værdi for hver kolonne i rækken fraT1
-tabellen for at danne en resultatrække, som derefter også indgår i resultatmængden.
Med andre ord returnerer et right outer join alle rækker fra den højre tabel og også de matchende rækker fra den venstre tabel.
Oracle RIGHT OUTER JOIN eksempler
Vi vil bruge tabellerne orders
og employees
i eksempeldatabasen til demonstrationen:
I dette diagram er en sælger ansvarlig for en eller flere salgsordrer. Nogle salgsordrer kan dog ikke være ansvarlige for nogen sælger.
Det følgende eksempel henter alle sælgere og deres eventuelle salgsordrer:
Resultatet omfatter alle medarbejdere, hvis stillingsbetegnelse er Sales Representative
, og deres ordrer.
Hvis en sælger ikke er ansvarlig for nogen salgsordre, f.eks. Alice Wells
, Charlotte Webb
, fyldes kolonnerne order_id
og status
med NULL-værdier.
Oracle RIGHT OUTER JOIN med USING-klausul
I lighed med andre sammenføjninger, f.eks. INNER JOIN
, LEFT JOIN
, kan du bruge USING
-klausulen til at angive, hvilken kolonne der skal testes for lighed, når du sammenføjer tabeller.
Det følgende illustrerer syntaksen for RIGHT OUTER JOIN
med USING
-klausulen:
I denne forespørgsel skal de kolonner, der er anført i USING
-klausulen, være præsenteret i både T1
– og T2
-tabellerne.
Den følgende erklæring svarer til ovenstående:
Den følgende erklæring viser, hvordan man bruger RIGHT OUTER JOIN
med USING
-klausulen:
I dette eksempel er alle kunder med i resultatmængden. Hvis en kunde ikke har en salgsordre, fyldes kolonnerne order_id
og status
med NULL-værdier.
Oracle RIGHT JOIN: betingelse i ON vs. WHERE-klausulen
Den følgende anvisning henter medarbejder- og ordredata for sælger id 57.
Den følgende anvisning placerer betingelsen i WHERE
-klausulen i stedet for ON
-klausulen:
Søgningen returnerede alle medarbejdere, men kun medarbejder id 57 havde de relaterede ordredata.
En bemærkning om, at med hensyn til INNER JOIN
, har betingelsen er placeret i ON
-klausulen den samme effekt, som den er placeret i WHERE
-klausulen.
I denne vejledning har du lært at bruge RIGHT OUTER JOIN
i Oracle til at forespørge data fra flere tabeller.
- Har denne vejledning været nyttig?
- JaNej