Joins
CIS-182
Multi-Table Queries
• Multi-table queries allow data from
different tables to be combined and
compared
• Typically done by comparing a common
value
– Comparison done between like data types
– May be primary key/foreign key fields but
doesn’t have to be
Types of Multi-table Queries
• Joins: combine columns from multiple tables
– Combine publishers and titles to show title and
publisher name
• Unions: combine rows from different lists
– Create a list of editors and authors who live in
California
• Subqueries: use the results of one query to
determine result of a second query
– Find all books that have a higher than average
price
Joins
• Inner Join: create a row for each match of
values from two tables
• Outer Join: include all rows from one table
and any related data found in a second
table
• Cartesian Join: match each row in a table
with every row in a second table
– Also referred to as a cross join
Inner Joins
• Most common kind of join
• Get related data from two tables where
values match
– Also referred to as an equi-join
• May be done using FROM clause or
WHERE clause
– Microsoft does not fully support WHERE
clause in SQL Server 2008
Join With FROM
• Use the keyword JOIN with or without
INNER preceeding it
• Specify the fields to compare using ON
• Field names that are not unique must be
qualified by the table they’re in
From Clause Examples
SELECT *
FROM Publishers JOIN Titles
ON Publishers.pub_id = Titles.pub_id
SELECT *
FROM Publishers INNER JOIN Titles
ON Publishers.pub_id = Titles.pub_id
Join With WHERE
• List tables in FROM clause, separated by
comma
• WHERE clause defines the fields to
compare
Where Clause Example
SELECT *
FROM Publishers, Titles
WHERE Publishers.pub_id =
Titles.pub_id
Outer Joins
• Used when rows from one table should be
part of the result even if there are no
related rows in a second table
– Create a list of all publishers, including any
titles the publisher has published
• Direction must be specified
– Left/Right specify which table has the rows
which should always be included
– Full specifies that rows from both tables
should be included even if no match
Outer Join Example
• Include all publishers, even if they haven’t
published a book:
SELECT *
FROM Publishers LEFT OUTER JOIN
Titles ON Publishers.pub_id =
Titles.pub_id
Cartesian Join
• Match each row from table 1 with every row
from table 2
– Result is (table 1 row count)*(table 2 row count)
• May be done using CROSS JOIN
SELECT *
FROM Publishers, Titles
SELECT *
FROM Publishers CROSS JOIN Titles

Joins

  • 1.
  • 2.
    Multi-Table Queries • Multi-tablequeries allow data from different tables to be combined and compared • Typically done by comparing a common value – Comparison done between like data types – May be primary key/foreign key fields but doesn’t have to be
  • 3.
    Types of Multi-tableQueries • Joins: combine columns from multiple tables – Combine publishers and titles to show title and publisher name • Unions: combine rows from different lists – Create a list of editors and authors who live in California • Subqueries: use the results of one query to determine result of a second query – Find all books that have a higher than average price
  • 4.
    Joins • Inner Join:create a row for each match of values from two tables • Outer Join: include all rows from one table and any related data found in a second table • Cartesian Join: match each row in a table with every row in a second table – Also referred to as a cross join
  • 5.
    Inner Joins • Mostcommon kind of join • Get related data from two tables where values match – Also referred to as an equi-join • May be done using FROM clause or WHERE clause – Microsoft does not fully support WHERE clause in SQL Server 2008
  • 6.
    Join With FROM •Use the keyword JOIN with or without INNER preceeding it • Specify the fields to compare using ON • Field names that are not unique must be qualified by the table they’re in
  • 7.
    From Clause Examples SELECT* FROM Publishers JOIN Titles ON Publishers.pub_id = Titles.pub_id SELECT * FROM Publishers INNER JOIN Titles ON Publishers.pub_id = Titles.pub_id
  • 8.
    Join With WHERE •List tables in FROM clause, separated by comma • WHERE clause defines the fields to compare
  • 9.
    Where Clause Example SELECT* FROM Publishers, Titles WHERE Publishers.pub_id = Titles.pub_id
  • 10.
    Outer Joins • Usedwhen rows from one table should be part of the result even if there are no related rows in a second table – Create a list of all publishers, including any titles the publisher has published • Direction must be specified – Left/Right specify which table has the rows which should always be included – Full specifies that rows from both tables should be included even if no match
  • 11.
    Outer Join Example •Include all publishers, even if they haven’t published a book: SELECT * FROM Publishers LEFT OUTER JOIN Titles ON Publishers.pub_id = Titles.pub_id
  • 12.
    Cartesian Join • Matcheach row from table 1 with every row from table 2 – Result is (table 1 row count)*(table 2 row count) • May be done using CROSS JOIN SELECT * FROM Publishers, Titles SELECT * FROM Publishers CROSS JOIN Titles