outer join

<database> A less commonly used variant of the inner join relational database operation. An inner join selects rows from two tables such that the value in one column of the first table also appears in a certain column of the second table. For an outer join, the result also includes all rows from the first operand ("left outer join"), or the second operand ("right outer join"), or both ("full outer join"). A field in a result row will be null if the corresponding input table did not contain a matching row.

For example, if we want to list all employees and their employee number, but not all employees have a number, then we could say (in SQL-92 syntax, as used by Microsoft SQL Server):

	SELECT employee.name, empnum.number
	FROM employee
	LEFT JOIN empnum ON employee.id = empnum.id

or, in Sybase syntax:

	SELECT employee.name, empnum.number
	FROM employee, empnum
	WHERE employee.id *= empnum.id

The "*" on the left means "left outer join". "*=*" would be a full outer join.

In Oracle syntax:

	SELECT employee.name, empnum.number
	FROM employee, empnum
	WHERE employee.id = empnum.id (+)

Note that the "(+)" on the right means "left outer join".

These all mean that all rows from the left-hand "employee" table will appear in the result, even if there is no match for their ID in the empnum table. Where there is no empnum.id equal to a given employee.id, a result row is output anyway but with all result columns from the empnum table null (empnum.number in this case).

Last updated: 2004-11-12

Try this search on Wikipedia, OneLook, Google

Nearby terms:

Ousterhout's fallacy « Ousterhout's false dichotomy « out « outer join » outline font » out-of-band » output

Loading