TableA LEFT OUTER JOIN TableB
svarer til TableB RIGHT OUTER JOIN Table A
.
I Oracle, (+)
angiver den "valgfri" tabel i JOIN. Så i din første forespørgsel er det en P LEFT OUTER JOIN S
. I din anden forespørgsel er det S RIGHT OUTER JOIN P
. De er funktionelt ækvivalente.
I terminologien angiver RIGHT eller LEFT, hvilken side af joinforbindelsen altid har en post, og den anden side kan være nul. Så i en P LEFT OUTER JOIN S
, P
vil altid have en post, fordi den er til LEFT
, men S
kunne være nul.
Se dette eksempel fra java2s.com for yderligere forklaring.
For at præcisere, tror jeg, jeg siger, at terminologi ikke betyder noget, da det kun er der for at hjælpe med at visualisere. Det vigtige er, at du forstår konceptet om, hvordan det fungerer.
HØJRE vs. VENSTRE
Jeg har oplevet en vis forvirring om, hvad der betyder noget for at bestemme RIGHT vs LEFT i implicit joinsyntaks.
VENSTRE YDRE JOIN
SELECT *
FROM A, B
WHERE A.column = B.column(+)
HØJRE YDRE JOIN
SELECT *
FROM A, B
WHERE B.column(+) = A.column
Alt, hvad jeg gjorde, var at bytte sider af vilkårene i WHERE-klausulen, men de er stadig funktionelt ækvivalente. (Se højere oppe i mit svar for mere info om det.) Placeringen af (+)
bestemmer HØJRE eller VENSTRE. (Specielt hvis (+)
er til højre, er det en LEFT JOIN. Hvis (+)
er til venstre, er det en RIGHT JOIN.)
Typer af JOIN
De to typer JOIN er implicitte JOINs og eksplicitte JOINs . De er forskellige stilarter til at skrive JOINs, men de er funktionelt ækvivalente.
Se dette SO-spørgsmål .
Implicitte JOINs blot liste alle tabeller sammen. Sammenkædningsbetingelserne er specificeret i en WHERE-sætning.
Implicit JOIN
SELECT *
FROM A, B
WHERE A.column = B.column(+)
Eksplicitte JOINs tilknyt joinbetingelser med en specifik tabels inklusion i stedet for i en WHERE-sætning.
Eksplicit JOIN
SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column
Disse implicitte JOINs kan være sværere at læse og forstå, og de har også et par begrænsninger, da joinbetingelserne er blandet i andre WHERE-forhold. Som sådan frarådes implicitte JOINs generelt til fordel for eksplicit syntaks.