Chapter 5. Querying Multiple Tables
Back in Chapter 2, I demonstrated how
related concepts are broken into separate pieces through a process known as
normalization. The end result of this exercise was two tables: person
and favorite_food
. If, however,
you want to generate a single report showing a person’s name, address,
and favorite foods, you will need a mechanism to bring the data
from these two tables back together again; this mechanism is known as a
join, and this chapter concentrates on the simplest and most
common join, the inner join. Chapter 10
demonstrates all of the different join types.
What Is a Join?
Queries against a single table are certainly not rare, but you will find that most
of your queries will require two, three, or even more tables. To illustrate, let’s
look at the definitions for the employee
and
department
tables and then define a query
that retrieves data from both tables:
mysql>DESC employee;
+--------------------+----------------------+------+-----+---------+ | Field | Type | Null | Key | Default | +--------------------+----------------------+------+-----+---------+ | emp_id | smallint(5) unsigned | NO | PRI | NULL | | fname | varchar(20) | NO | | NULL | | lname | varchar(20) | NO | | NULL | | start_date | date | NO | | NULL | | end_date | date | YES | | NULL | | superior_emp_id | smallint(5) unsigned | YES | MUL | NULL | |dept_id
| smallint(5) unsigned | YES | MUL | NULL | | title | varchar(20) | YES | | NULL | | assigned_branch_id | smallint(5) unsigned ...
Get Learning SQL, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.