Oracle offers an IMHO strange (to me) syntax to support joins right in WHERE
clauses.
You can interpret the (+)
operator like this: "Extend the original result set with NULL
rows, if the join condition is not met."
See also:
SELECT * FROM A, B WHERE A.SOME_FIELD = B.ANOTHER_FIELD -- simple join / equi join: only matching rows
SELECT * FROM A, B WHERE A.SOME_FIELD = B.ANOTHER_FIELD(+) -- all rows from A, rows from B on match or NULL otherwise
SELECT * FROM A, B WHERE A.SOME_FIELD(+) = B.ANOTHER_FIELD -- all rows from B, rows from A on match or NULL otherwise