Let’s take a look at how an
outer join works.
Suppose I want to see a list of all customers along with some
ordering information for those customers who have placed orders. The
code will resemble the following.
Select C.[Field List], O.[Field List]
from Customers C left outer join Orders O on
C.CustomerID=O.CustromerID
This query will return all of the customers,
even those who haven’t placed orders, along with the ordering
information for those customers who have placed orders.
You
might have noticed the words “left outer join.” In SQL server, there
are left outer and right outer joins. The left/right indicator tells
SQL server which is the table that you want all of the rows to come
from, and which is the one to include only matched rows. Left outer
joins will return all of the rows from the table on the left (the
one listed first in the from list)-and return the data from matching
rows in the table on the right. Right outer joins will return all of
the rows from the table on the right (the one listed second in the
from list)-and return data from the matching rows on the left.
What
about multiple joins?
Consider
the following query.
Select
T1.fields, T2.fields, T3.fields
from
T1 left outer join T2
on
T1.t1ID=T2.t1ID
left
outer join T3
on
T3.t2ID=T2.t2ID
This
query will first capture all of the rows in T1 and the matching data
from T2. It will then take this intermediate “table” or rowset and
add all of the data from the matching rows in T3.
Some
things to remember to optimize joins.
1.
In
SQL server, it’s generally faster to put your conditions in the join
clause instead of in the where clause
2.
Put
your most limiting table first, to minimize the number of rows to be
joined
3.
Consider
the question you are trying to answer and make sure you have chosen
the right type of join.