runtime
18 / 88

lesson 18 Joins & sets · intermediate

Connect tables with JOIN

Connect rows from related tables using matching keys.

the idea

INNER JOIN pairs rows whose join condition matches. Aliases keep column references short. One customer can match several orders, so joins can increase row counts.

tables in this lesson

The challenges use this data. Each column shows its type underneath; → marks a link to another table.

customers4 columns · 8 rows
idinteger · keynametextcitytextjoined_attext
1AliceChicago2024-01-10
2BenAustin2024-02-12
3CaraSeattle2024-03-05
4DevChicago2024-04-20
5ElenaNULL2024-05-01

showing 5 of 8 rows

orders6 columns · 12 rows
idinteger · keycustomer_idintegerproduct_idintegerquantityintegerstatustextordered_attext
101112paid2025-01-01
102231paid2025-01-02
103121paid2025-01-05
104352pending2025-01-08
105445paid2025-02-01

showing 5 of 12 rows

products4 columns · 6 rows
idinteger · keynametextcategorytextpricereal
1NotebookStationery12
2Desk lampHome45
3KeyboardTech80
4Pen setStationery8
5HeadphonesTech120

showing 5 of 6 rows

example

The idea in one query. Press Run to see what it returns; running examples never affects your progress.

example.sql
SELECT o.id, c.name
FROM orders o
JOIN customers c ON c.id = o.customer_id;

Watch for: Joining without the correct ON condition can multiply unrelated rows.

build it step by step

Each step changes one thing. Run them in order and watch the result change.

  1. Find the matching keys. orders.customer_id references customers.id. Read both columns so the JOIN condition is concrete before you write it.

    step-1.sql
    SELECT id AS order_id, customer_id
    FROM orders
    ORDER BY id
    LIMIT 8;
  2. Combine matching rows with JOIN. INNER JOIN keeps only pairs that satisfy the ON condition. Aliases keep the two id columns clear.

    step-2.sql
    SELECT o.id, c.name
    FROM orders o
    JOIN customers c ON c.id = o.customer_id;

challenge 1

Return every order id and its customer name (columns id, name).

Return idnameany row order

challenge-1.sql
 
To master this lesson, solve both challenges without hints and pass the concept check. 3 of 3 to go.