Monday, August 13, 2007

FAQ on Joins in SQL Server

FAQ on Joins in SQL Server

43. What are joins?
Sometimes we have to select data from two or more tables to make our
result complete. We have to perform a join.

44. How many types of Joins?
Joins can be categorized as:
• Inner joins (the typical join operation, which uses some comparison
operator like = or <>). These include equi-joins and natural joins.
Inner joins use a comparison operator to match rows from two tables
based on the values in common columns from each table. For example,
retrieving all rows where the student identification number is the
same in both the students and courses tables.
• Outer joins. Outer joins can be a left, a right, or full outer join.
Outer joins are specified with one of the following sets of keywords
when they are specified in the FROM clause:
• LEFT JOIN or LEFT OUTER JOIN -The result set of a left outer join
includes all the rows from the left table specified in the LEFT OUTER
clause, not just the ones in which the joined columns match. When a
row in the left table has no matching rows in the right table, the
associated result set row contains null values for all select list
columns coming from the right table.

• RIGHT JOIN or RIGHT OUTER JOIN - A right outer join is the reverse
of a left outer join. All rows from the right table are returned. Null
values are returned for the left table any time a right table row has
no matching row in the left table.
• FULL JOIN or FULL OUTER JOIN - A full outer join returns all rows in
both the left and right tables. Any time a row has no match in the
other table, the select list columns from the other table contain null
values. When there is a match between the tables, the entire result
set row contains data values from the base tables.
• Cross joins - Cross joins return all rows from the left table, each
row from the left table is combined with all rows from the right
table. Cross joins are also called Cartesian products. (A Cartesian
join will get you a Cartesian product. A Cartesian join is when you
join every row of one table to every row of another table. You can
also get one by joining every row of a table to every row of itself.)

45. What is self join?
A table can be joined to itself in a self-join.

46. What are the differences between
UNION and JOINS?
A join selects columns from 2 or more tables. A union selects rows.

47. Can I improve performance by using the ANSI-style joins instead of
the old-style joins?
Code Example 1:
select o.name, i.name
from sysobjects o, sysindexes i
where o.id = i.id
Code Example 2:
select o.name,
i.name

from sysobjects o inner join sysindexes i
on o.id = i.id
You will not get any performance gain by switching to the ANSI-style
JOIN syntax.
Using the ANSI-JOIN syntax gives you an important advantage: Because
the join logic is cleanly separated from the filtering criteria, you
can understand the query logic more quickly.
The SQL Server old-style JOIN executes the filtering conditions before
executing the joins, whereas the ANSI-style JOIN reverses this
procedure (join logic precedes filtering).
Perhaps the most compelling argument for switching to the ANSI-style
JOIN is that Microsoft has explicitly stated that SQL Server will not
support the old-style OUTER JOIN syntax indefinitely. Another
important consideration is that the ANSI-style JOIN supports query
constructions that the old-style JOIN syntax does not support.

48. What is derived table?
Derived tables are SELECT statements in the FROM clause referred to by
an alias or a user-specified name. The result set of the SELECT in the
FROM clause forms a table used by the outer SELECT statement. For
example, this SELECT uses a derived table to find if any store carries
all book titles in the pubs database:
SELECT ST.stor_id, ST.stor_name
FROM stores AS ST,
(SELECT stor_id, COUNT(DISTINCT title_id) AS title_count
FROM sales
GROUP BY stor_id
) AS SA
WHERE ST.stor_id = SA.stor_id
AND SA.title_count = (SELECT COUNT(*) FROM titles)


For More SQL SERVER Frequently Asked Interview Questions

No comments:

Most Recent Post

Community Updates

Subscribe Blog via Email

Enter your email address:



Disclaimers:We have tried hard to provide accurate information, as a user, you agree that you bear sole responsibility for your own decisions to use any programs, documents, source code, tips, articles or any other information provided on this Blog.
Page copy protected against web site content infringement by Copyscape