TableA LEFT OUTER JOIN TableB
es equivalente a TableB RIGHT OUTER JOIN Table A
.
En Oracle, (+)
denota la tabla "opcional" en JOIN. Entonces, en su primera consulta, es un P LEFT OUTER JOIN S
. En su segunda consulta, es S RIGHT OUTER JOIN P
. Son funcionalmente equivalentes.
En la terminología, RIGHT o LEFT especifican qué lado de la combinación siempre tiene un registro y el otro lado puede ser nulo. Entonces, en a P LEFT OUTER JOIN S
, P
siempre tendrá un registro porque está en LEFT
, pero S
podría ser nulo.
Consulte este ejemplo de java2s.com para obtener una explicación adicional.
Para aclarar, supongo que estoy diciendo que la terminología no importa, ya que solo está ahí para ayudar a visualizar. Lo que importa es que comprenda el concepto de cómo funciona.
DERECHA vs IZQUIERDA
He visto cierta confusión sobre lo que importa al determinar DERECHA frente a IZQUIERDA en la sintaxis de unión implícita.
IZQUIERDA COMBINACIÓN EXTERNA
SELECT *
FROM A, B
WHERE A.column = B.column(+)
UNIÓN EXTERIOR DERECHA
SELECT *
FROM A, B
WHERE B.column(+) = A.column
Todo lo que hice fue cambiar los lados de los términos en la cláusula WHERE, pero siguen siendo funcionalmente equivalentes. (Consulte más arriba en mi respuesta para obtener más información sobre eso). La ubicación de los (+)
determina DERECHA o IZQUIERDA. (Específicamente, si (+)
está a la derecha, es LEFT JOIN. Si (+)
está a la izquierda, es RIGHT JOIN).
Tipos de JOIN
Los dos estilos de JOIN son JOIN implícitos y JOIN explícitos . Son diferentes estilos de escribir JOIN, pero son funcionalmente equivalentes.
Vea esta pregunta SO .
Los JOIN implícitos simplemente enumeran todas las tablas juntas. Las condiciones de unión se especifican en una cláusula WHERE.
JOIN implícito
SELECT *
FROM A, B
WHERE A.column = B.column(+)
Las JOIN explícitas asocian condiciones de combinación con la inclusión de una tabla específica en lugar de en una cláusula WHERE.
JOIN explícito
SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column
Estos JOIN implícitos pueden ser más difíciles de leer y comprender, y también tienen algunas limitaciones, ya que las condiciones de combinación se mezclan en otras condiciones WHERE. Como tal, las JOIN implícitas generalmente se recomiendan en favor de la sintaxis explícita.