The Data Management Center

SQL OUTER JOIN


David Haertzen David Haertzen, Tutorial Author
Check out our
Data Warehousing Tutorial.

HOME | SQL OVERVIEW | SQL BASICS | SQL ADMIN | SQL ADVANCED | SQL SYNTAX | Bookmark and Share
Previous | Next

SQL > SQL Advanced > SQL OUTER JOIN


What is SQL OUTER JOIN?

The SQL OUTER JOIN clause is a variation of the SQL JOIN clause enables a SELECT statement to access more than one table. The JOIN clause controls how tables are linked. It is a qualifier of the SQL FROM clause.

 

The OUTER JOIN clause differs from the standard JOIN clause (also known as the INNER JOIN clause) in that rows are returned even when there are no matches through the JOIN critieria on the second table.

Why Use SQL OUTER JOIN?

Use the SQL OUTER JOIN whenever multiple tables must be accessed through a SQL SELECT statement and results should be returned if there is not a match between the JOINed tables.

It can be useful when there is a need to merge data from two tables and to include all rows from both tables without depending on a match. Another use is to generate a large result set for testing purposes.


How To Use SQL OUTER JOIN

SQL OUTER JOIN is used as follows. The ON clause describes the conditions of the JOIN.

Important! A "cartesian product" can result if there is no relating the tables for the join. A row would be included for each combination between the two tables so if one table has 1,000 rows and the second table has 2,000 rows then 2,000,000 rows would be returned.

Important! If there are matches on the JOIN criteria then rows will still be returned. This is known an "OUTER JOIN". Use the "INNER JOIN" in cases where no rows should be returned when one side of the join is missing.

SQL OUTER JOIN Syntax

 
SELECT <column_name1>, <column_name2> <aggregate_function>
FROM <table_name>
LEFT OUTER JOIN <table_name> ON <join_conditions>
 

SQL OUTER JOIN Example

The following example JOINs the region and branch tables on the region_nbr column.

Here are the contents of the tables:

Table: REGION
region_nbrregion_name
100East Region
200Central Region
300Virtual Region
400West Region

Table: BRANCH
branch_nbrbranch_nameregion_nbremployee_count
108New York10010
110Boston1006
212Chicago2005
404San Diego4006
415San Jose4003

This SQL Statement with OUTER JOIN is executed:

 
SELECT region.region_nbr, region.region_name, branch.branch_nbr, branch.branch_name
FROM dbo.region
LEFT OUTER JOIN dbo.branch
ON branch.region_nbr = region.region_nbr
ORDER BY region.region_nbr
 

Here is the result. Note that the "Virtual Region" is included in the results even though it has no rows in the branch table. This is the difference between the INNER JOIN and OUTER JOIN.

region_nbrregion_namebranch_nbrbranch_name
100East Region108New York
100East Region110Boston
200Central Region212Chicago
300Virtual RegionNULLNULL
400West Region404San Diego
400West Region415San Jose

HOME | SQL OVERVIEW | SQL BASICS | SQL ADMINISTRATION | SQL ADVANCED | SQL SYNTAX
infogoal.com HOME
SQL OVERVIEW
SQL SYNTAX
SQL BOOKREVIEWS
SQL BASICS
SQL SELECT
SQL WHERE
SQL INSERT
SQL UPDATE
SQL DELETE
SQL ADMINISTRATION
SQL CREATE DATABASE
SQL DROP DATABASE
SQL CREATE TABLE
SQL ALTER TABLE
SQL DROP TABLE
SQL CREATE INDEX
SQL DROP INDEX
SQL ADD FOREIGN KEY
SQL DROP FOREIGN KEY
SQL CREATE VIEW
SQL DROP VIEW
SQL ADVANCED
SQL CONCAT
SQL SUBSTRING
SQL TRIM
SQL AND & OR
SQL IN
SQL BETWEEN
SQL LIKE
SQL DISTINCT
SQL GROUP BY
SQL AGGREGATE
SQL HAVING
SQL ORDER BY
SQL JOIN
SQL OUTER JOIN

Copyright© 1999-2014, First Place Software, Inc.