Förklara hur du hittar den högra och vänstra yttre sammanfogningen korrekt med ett exempel
Jag ska göra ett försök att visa skillnaden mellan Oracle outer join-syntax och ANSI/ISO-syntaxen .
VÄNSTER YTTRE 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);
HÖGER YTTRE 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);
FULLSTÄNDIG YTTRE JOIN -
Innan det ursprungliga stödet för hash full outerjoin i 11gR1, skulle Oracle internt konvertera FULL OUTER JOIN på följande sätt -
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);
Ta en titt på det här.