Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So finden Sie LEFT OUTER JOIN oder RIGHT OUTER JOIN mit ORACLE JOIN (+)

Bitte verdeutlichen Sie anhand eines Beispiels, wie Sie den rechten und linken äußeren Join richtig finden.

Ich werde versuchen, den Unterschied zwischen der Outer Join-Syntax von Oracle aufzuzeigen und die ANSI/ISO-Syntax .

LEFT OUTER JOIN -

SELECT e.last_name,
  d.department_name
FROM employees e,
  departments d
WHERE e.department_id = d.department_id(+);

SELECT e.last_name,
  d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);

RIGHT OUTER JOIN -

SELECT e.last_name,
  d.department_name
FROM employees e,
  departments d
WHERE e.department_id(+) = d.department_id;

SELECT e.last_name,
  d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);

FULL OUTER JOIN -

Vor der nativen Unterstützung von Hash Full Outerjoin in 11gR1 konvertierte Oracle den FULL OUTER JOIN intern auf folgende Weise -

SELECT e.last_name,
  d.department_name
FROM employees e,
  departments d
WHERE e.department_id = d.department_id(+)
UNION ALL
SELECT NULL,
  d.department_name
FROM departments d
WHERE NOT EXISTS
  (SELECT 1 FROM employees e WHERE e.department_id = d.department_id
  );

SELECT e.last_name,
  d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);

Schau dir das mal an.