sql >> Databasteknik >  >> RDS >> Oracle

Hur man hittar LEFT OUTER JOIN eller RIGHT OUTER JOIN med ORACLE JOIN (+)

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.



  1. SQL:Vad är bättre en bit eller en char(1)

  2. Hur kan jag ta bort dubbletter av rader?

  3. ScaleGrid PostgreSQL på VMware Cloud Infrastructure

  4. Formatera ett telefonnummer i SQL Server (T-SQL)