dcsimg

Join the World Page 2

By ServerWatch Staff (Send Email)
Posted Mar 11, 2001


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.

Page 2 of 2


Comment and Contribute

Your name/nickname

Your email

(Maximum characters: 1200). You have characters left.