Search This Blog

Wednesday, December 1, 2010

What are the different types of join in SQL Server ?

The different types of joins are:

1. Inner join   A join that displays only the rows that have a match in both joined tables. (This is the default type of join in the Query Designer.)
 For example, you can join the titles and publishers tables to create a result set that shows the publisher name for each title. In an inner join, titles for which you do not have publisher information are not included in the result set, nor are publishers with no titles.  The resulting SQL for such a join might look like this:
SELECT     title, pub_name
FROM         titles INNER JOIN
publishers ON titles.pub_id = publishers.pub_id
Note   Columns containing NULL do not match any values when you are creating an inner join and are therefore excluded from the result set. Null values do not match other null values.

2. Outer join   A join that includes rows even if they do not have related rows in the joined table. You can create three variations of an outer join to specify the unmatched rows to be included:
  • Left outer join   All rows from the first-named table (the "left" table, which appears leftmost in the JOIN clause) are included. Unmatched rows in the right table do not appear.
 For example, the following SQL statement illustrates a left outer join between the titles and publishers tables to include all titles, even those you do not have publisher information for:
SELECT titles.title_id, 
       titles.title, 
       publishers.pub_name
FROM titles LEFT OUTER JOIN publishers 
            ON titles.pub_id 
             = publishers.pub_id
  • Right outer join   All rows in the second-named table (the "right" table, which appears rightmost in the JOIN clause) are included. Unmatched rows in the left table are not included.
For example, a right outer join between the titles and publishers tables will include all publishers, even those who have no titles in the titles table.  The resulting SQL might look like this:
SELECT titles.title_id, 
       titles.title, 
       publishers.pub_name
FROM titles RIGHT OUTER JOIN publishers 
            ON titles.pub_id 
             = publishers.pub_id
  • Full outer join   All rows in all joined tables are included, whether they are matched or not.
 For example, a full outer join between titles and publishers shows all titles and all publishers, even those that have no match in the other table.
SELECT titles.title_id, 
       titles.title, 
       publishers.pub_name
FROM titles FULL OUTER JOIN publishers 
            ON titles.pub_id 
             = publishers.pub_id
3. Cross join   A join whose result set includes one row for each possible pairing of rows from the two tables. In other words, A cross join produces the Cartesian product of the tables involved in the join. The size of a Cartesian product result set is the number of rows in the first table multiplied by the number of rows in the second table.

 For example, authors CROSS JOIN publishers yields a result set with one row for each possible author/publisher combination.  The resulting SQL might look like this:
SELECT *
FROM authors CROSS JOIN publishers 

No comments:

Post a Comment