TableA LEFT OUTER JOIN TableB è equivalente a TableB RIGHT OUTER JOIN Table A .
In Oracle, (+) denota la tabella "opzionale" nel JOIN. Quindi nella tua prima query, è un P LEFT OUTER JOIN S . Nella tua seconda query, è S RIGHT OUTER JOIN P . Sono funzionalmente equivalenti.
Nella terminologia, DESTRA o SINISTRA specificano quale lato del join ha sempre un record e l'altro lato potrebbe essere nullo. Quindi in un P LEFT OUTER JOIN S , P avrà sempre un record perché è su LEFT , ma S potrebbe essere nullo.
Vedi questo esempio da java2s.com per ulteriori spiegazioni.
Per chiarire, suppongo che sto dicendo che la terminologia non ha importanza, poiché è lì solo per aiutare a visualizzare. L'importante è che tu comprenda il concetto di come funziona.
DESTRA vs SINISTRA
Ho visto una certa confusione su ciò che conta nel determinare DESTRA e SINISTRA nella sintassi di join implicita.
UNISCITI ESTERNI SINISTRA
SELECT *
FROM A, B
WHERE A.column = B.column(+)
ACCESSO ESTERNO DESTRO
SELECT *
FROM A, B
WHERE B.column(+) = A.column
Tutto quello che ho fatto è stato scambiare i lati dei termini nella clausola WHERE, ma sono ancora funzionalmente equivalenti. (Vedi più in alto nella mia risposta per maggiori informazioni al riguardo.) Il posizionamento del (+) determina DESTRA o SINISTRA. (In particolare, se il (+) è sulla destra, è un UNIONE A SINISTRA. Se (+) è a sinistra, è un RIGHT JOIN.)
Tipi di UNISCITI
I due stili di JOIN sono JOIN impliciti e JOIN espliciti . Sono stili diversi di scrittura dei JOIN, ma sono funzionalmente equivalenti.
Vedi questa domanda SO .
JOIN impliciti elenca semplicemente tutte le tabelle insieme. Le condizioni di unione sono specificate in una clausola WHERE.
UNIONE implicita
SELECT *
FROM A, B
WHERE A.column = B.column(+)
JOIN espliciti associa condizioni di join con l'inclusione di una tabella specifica anziché in una clausola WHERE.
ISCRIZIONE esplicita
SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column
Questi JOIN impliciti possono essere più difficili da leggere e comprendere e hanno anche alcune limitazioni poiché le condizioni di join sono mescolate in altre condizioni WHERE. Pertanto, i JOIN impliciti sono generalmente sconsigliati a favore della sintassi esplicita.