SQL Joins: Combining Data from Multiple Tables

SQL joins are used to combine rows from two or more tables based on a related column. This allows you to retrieve data from multiple tables in a single query, creating a more comprehensive view of your information.



Understanding Joins

Let's illustrate with example tables. Suppose we have an 'Orders' table and a 'Customers' table:

Orders Table

OrderID CustomerID OrderDate
10308 2 1996-09-18
10309 37 1996-09-19
10310 77 1996-09-20

Customers Table

CustomerID CustomerName ContactName Country
1 Alfreds Futterkiste Maria Anders Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico
3 Antonio Moreno Taquería Antonio Moreno Mexico

Notice that the 'CustomerID' in the 'Orders' table links to the 'CustomerID' in the 'Customers' table. This common column is the key to joining the tables.

INNER JOIN Example

An INNER JOIN returns only the rows where there's a match in both tables. Here's how to combine 'Orders' and 'Customers' using an INNER JOIN:

Syntax

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
      
Output

OrderID | CustomerName                     | OrderDate
---------------------------------------------------
10308   | Ana Trujillo Emparedados y helados | 1996-09-18
(More rows would appear here based on matching CustomerIDs)
      

Types of SQL Joins

Different join types offer various ways to combine data:

  • (INNER) JOIN: Returns rows only where there's a match in both tables.
  • LEFT (OUTER) JOIN: Returns all rows from the left table and matching rows from the right table; if there's no match on the right, it shows NULL values for the right table's columns.
  • RIGHT (OUTER) JOIN: Returns all rows from the right table and matching rows from the left table; NULL values are used for unmatched rows on the left.
  • FULL (OUTER) JOIN: Returns all rows from both tables. If there is a match, the columns from both tables are combined; otherwise, NULL values are used for the missing columns.

**Note:** The example output is partial; a real result set would include all rows where the `CustomerID` exists in both the `Orders` and `Customers` tables. The `...` indicates that additional rows would be displayed.