Sammanfattning: I den här handledningen lär du dig hur du använder RIGHT OUTER JOIN
i Oracle för att sammanfoga två eller flera tabeller.
Översikt över RIGHT OUTER JOIN i Oracle
Antag att vi har två tabeller T1
och T2
, följande uttalande visar hur man förenar dessa två tabeller med hjälp av RIGHT OUTER JOIN
-klausulen i Oracle:
I det här uttalandet är T1
och T2
den vänstra respektive den högra tabellen.
Nyckelordet OUTER
är valfritt och därför är RIGHT OUTER JOIN
och RIGHT JOIN
samma.
Här är hur RIGHT OUTER JOIN
fungerar.
Varje rad från T1
tabellen jämförs med rader från T2
tabellen:
- Om ett par rader uppfyller joinpredikatet kombineras kolumnvärdena i båda raderna till en resultatrad som sedan ingår i resultatmängden.
- Om en rad i tabellen
T2
inte matchar någon rad i tabellenT1
kombineras kolumnvärdena från raden i tabellenT2
med ett NULL-värde för varje kolumn i raden från tabellenT1
för att skapa en resultatrad som då också ingår i resultatmängden.
Med andra ord returnerar en right outer join alla rader från den högra tabellen och även de matchande raderna från den vänstra tabellen.
Oracle RIGHT OUTER JOIN examples
Vi kommer att använda tabellerna orders
och employees
i exempeldatabasen för demonstrationen:
I det här diagrammet är en försäljare ansvarig för en eller flera försäljningsorder. Vissa försäljningsorder kanske dock inte ansvarar för någon säljare.
Med följande exempel hämtas alla säljare och deras eventuella försäljningsorder:
Resultatet innehåller alla anställda vars arbetstitel är Sales Representative
och deras order.
Om en säljare inte ansvarar för någon försäljningsorder som Alice Wells
, Charlotte Webb
fylls kolumnerna order_id
och status
med NULL-värden.
Oracle RIGHT OUTER JOIN med USING-klausulen
I likhet med andra sammanfogningar som INNER JOIN
, LEFT JOIN
kan du använda USING
-klausulen för att ange vilken kolumn som ska testas för jämlikhet när du sammanfogar tabeller.
Nedan visas syntaxen för RIGHT OUTER JOIN
med USING
-klausulen:
I den här frågan måste de kolumner som anges i USING
-klausulen presenteras i tabellerna T1
och T2
.
Det följande uttalandet är likvärdigt med det ovan:
Det följande uttalandet visar hur man använder RIGHT OUTER JOIN
med USING
-klausulen:
I det här exemplet ingår alla kunder i resultatmängden. Om en kund inte har någon försäljningsorder fylls kolumnerna order_id
och status
med NULL-värden.
Oracle RIGHT JOIN: villkor i ON vs. WHERE-klausulen
Följande anvisning hämtar anställd- och orderdata för försäljaren id 57.
Följande uttalande placerar villkoret i WHERE
-klausulen istället för ON
-klausulen:
Frågan returnerade alla anställda men endast den anställde id 57 hade tillhörande orderdata.
Notera att när det gäller INNER JOIN
har villkoret som placeras i ON
-klausulen samma effekt som när det placeras i WHERE
-klausulen.
I den här handledningen har du lärt dig hur du använder RIGHT OUTER JOIN
i Oracle för att fråga efter data från flera tabeller.
- Var den här handledningen till hjälp?
- JaNej