Code Academy SQ L
Code Academy SQ L
Code Academy SQ L
orders
subscriptions
customers
If we just look at the orders table, we can’t really tell what’s happened in each order. However,
if we refer to the other tables, we can get a complete picture.
Let’s examine the order with an order_id of 2. It was purchased by the customer with
a customer_id of 2.
To find out the customer’s name, we look at the customers table and look for the item with
a customer_id value of 2. We can see that Customer 2’s name is ‘Jane Doe’ and that she lives at
‘456 Park Ave’.
Instructions
1.
Using the tables displayed, what is the description of the magazine ordered in order_id 1?
Answer: Sports Magazine
MULTIPLE TABLES
Combining Tables with SQL
Combining tables manually is time-consuming. Luckily, SQL gives us an easy
sequence for this: it’s called a JOIN.
SELECT *
FROM orders
JOIN customers
ON orders.customer_id = customers.customer_id;
Let’s break down this command:
1. The first line selects all columns from our combined table. If we only
want to select certain columns, we can specify which ones we want.
2. The second line specifies the first table that we want to look in, orders
3. The third line uses JOIN to say that we want to combine information
from orders with customers.
4. The fourth line tells us how to combine the two tables. We want to
match orders table’s customer_id column
with customers table’s customer_id column.
Because column names are often repeated across multiple tables, we use the
syntax table_name.column_name to be sure that our requests for columns are
unambiguous. In our example, we use this syntax in the ON statement, but we
will also use it in the SELECT or any other statement where we refer to column
names.
Instructions
1.
Join orders table and subscriptions table and select all columns.
Hint
Suppose we do:
SELECT *
FROM orders
LIMIT 10;
SELECT *
FROM subscriptions
LIMIT 10;
You will notice that both orders table and subscriptions table have
a subscription_id column.
orders.subscription_id
subscriptions.subscription_id
SELECT *
FROM orders
JOIN subscriptions
ON orders.subscription_id = subscriptions.subscription_id;
Notice that in the column subscriptions.subscription_id, the table name has a
‘s’ in the end.
2.
Don’t remove the previous query.
Add a second query after your first one that only selects rows from the join
where description is equal to ‘Fashion Magazine’.
Hint
The WHERE clause goes after the JOIN!
Answer:
-- Checkpoint 1
SELECT *
FROM orders
JOIN subscriptions
ON orders.subscription_id = subscriptions.subscription_id;
-- Checkpoint 2
SELECT *
FROM orders
JOIN subscriptions
ON orders.subscription_id = subscriptions.subscription_id
WHERE subscriptions.description = 'Fashion Magazine';