background image
<< JOIN expressions and query optimization | RIGHT OUTER JOIN operation >>

LEFT OUTER JOIN operation

<< JOIN expressions and query optimization | RIGHT OUTER JOIN operation >>
Derby Reference Manual
103
-- department number (WORKDEPT in the EMPLOYEE table and DEPTNO in the
-- DEPARTMENT table)
-- and department name (DEPTNAME)
-- of all employees who were born (BIRTHDATE) earlier than 1930.
SELECT EMPNO, LASTNAME, WORKDEPT, DEPTNAME
FROM SAMP.EMPLOYEE JOIN SAMP.DEPARTMENT
ON WORKDEPT = DEPTNO
AND YEAR(BIRTHDATE) < 1930
-- Another example of "generating" new data values,
-- using a query which selects from a VALUES clause (which is an
-- alternate form of a fullselect).
-- This query shows how a table can be derived called "X"
-- having 2 columns "R1" and "R2" and 1 row of data
SELECT *
FROM (VALUES (3, 4), (1, 5), (2, 6))
AS VALUESTABLE1(C1, C2)
JOIN (VALUES (3, 2), (1, 2),
(0, 3)) AS VALUESTABLE2(c1, c2)
ON VALUESTABLE1.c1 = VALUESTABLE2.c1
-- This results in:
-- C1 |C2 |C1 |2
-- -----------------------------------------------
-- 3 |4 |3 |2
-- 1 |5 |1 |2


-- List every department with the employee number and
-- last name of the manager
SELECT DEPTNO, DEPTNAME, EMPNO, LASTNAME
FROM DEPARTMENT INNER JOIN EMPLOYEE
ON MGRNO = EMPNO
-- List every employee number and last name
-- with the employee number and last name of their manager
SELECT E.EMPNO, E.LASTNAME, M.EMPNO, M.LASTNAME
FROM EMPLOYEE E INNER JOIN
DEPARTMENT INNER JOIN EMPLOYEE M
ON MGRNO = M.EMPNO
ON E.WORKDEPT = DEPTNO
LEFT OUTER JOIN operation
A LEFT OUTER JOIN is one of the
JOIN operations
that allow you to specify a join
clause. It preserves the unmatched rows from the first (left) table, joining them with a
NULL row in the shape of the second (right) table.
Syntax
TableExpression
LEFT [ OUTER ] JOIN
TableExpression
{
ON booleanExpression |
USING clause
}
The scope of expressions in either the ON clause includes the current tables and any
tables in query blocks outer to the current SELECT. The ON clause can reference tables
not being joined and does not have to reference either of the tables being joined (though
typically it does).
Example 1
-- match cities to countries in Asia
SELECT CITIES.COUNTRY, CITIES.CITY_NAME, REGION
FROM Countries