MySQL tutorial on join queries Free Web Design Tutorials
Home   HTML CSS JavaScript PHP MySQL Usability Glossary
MySQLBasicsCreate and DropShow and DescribeInsert, Update and DeleteQueryingMySQL Join QueriesJoin QueriesFunctionsTable LockingPHP/MySQL FunctionsAccessing a DatabaseQuerying with PHPCreate and Drop with PHPInsert & Update with PHPFrequently Used Functions

Home > MySQL > Join Queriesprinter version

MySQL Join Queries

This tutorial assumes that you have access to the MySQL command prompt and uses the people table created in the Create Tutorial.

A join query is one that outputs rows based on a join condition in a WHERE clause used on two or more tables.

To demonstrate joins an additional table called payroll has been added to the database and the contents of people and payroll are shown below using a SELECT query.

Examples of Select Statements
mysql> SELECT * FROM people;
+------------+--------+------------+------------+-------+---+
|id|firstname|lastname|address     |county      |country|age|
+------------+--------+------------+------------+-------+---+
|1 |Dave     |Clark   |Main Street |West Lothian|UK     |40 |
|2 |Mary     |Smith   |North Street|Cumbria     |UK     |36 |
|3 |Dave     |Smith   |West Street |Strathclyde |UK     |51 |
+------------+--------+------------+------------+-------+---+
3 rows in set (0.00 sec)

mysql> SELECT * FROM payroll;
+------------+--------+----------+------+
|id|firstname|lastname|job       |salary|
+------------+--------+----------+------+
|1 |Dave     |Clark   |Programmer|20010 |
|2 |Mary     |Smith   |Manager   |25030 |
|3 |Dave     |Smith   |Operator  |12400 |
+------------+--------+----------+------+
3 rows in set (0.00 sec)

mysql>


Below is a join query that returns job, age and salary using data from the people and payroll table.

Example of a Join Query
mysql> SELECT job, age, salary FROM people, payroll WHERE people.id = payroll.id;
+----------+---+------+
|job       |age|salary|
+----------+---+------+
|Programmer|40 |20010 |
|Manager   |36 |25030 |
|Operator  |51 |12400 |
+----------+---+------+
3 rows in set (0.10 sec)

mysql>


For a join query to work the following features must be observed.



A Cartesian Product

A Cartesian Product is returned when a Cartesian join is used which returns all possible combinations of the attributes in each table.

In the WHERE clause in the query above if people.lastname and payroll.lastname had been used instead of people.id and payroll.id it would have returned all combinations of these attributes - which is not what is required.

Example of a Cartesian Join
mysql> SELECT job, age, salary FROM people, payroll WHERE people.lastname = payroll.lastname;
+----------+---+------+
|job       |age|salary|
+----------+---+------+
|Programmer|40 |20010 |
|Manager   |36 |25030 |
|Manager   |51 |25030 |
|Operator  |36 |12400 |
|Operator  |51 |12400 |
+----------+---+------+
5 rows in set (0.11 sec)

mysql>


The result above implies that there are two managers and two operators aged, 36 and 51 which isn't the case.

With join queries you must be careful to avoid the Cartesian Product if you want sensible results.

Previous - MySQL Querying Previous - Querying     Next - Functions Next - MySQL Functions


Privacy | Terms | Contact | Links | Sitemap | RSS Feeds RSS and JavaScript Feeds
©2009 www.webdesignworkmate.co.uk all rights reserved 
Design and Production by smallbizonline website design © 2000-2009
Valid HTML 4.01! Level Double-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0Valid CSS!
Recommended Reading
PHP6 and MySQL5

PHP and MySQL Web Development

Build Your Own Database Driven Website using PHP and 

MySQL

How to do Everything with PHP and MySQL