Rewriting Sub-selects as Joins
mysql>
mysql> CREATE TABLE customer (
-> id int(11) default NULL,
-> first_name varchar(30) default NULL,
-> surname varchar(40) default NULL
-> ) ;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> INSERT INTO customer VALUES (1, 'Tom', 'Clegg');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO customer VALUES (2, 'Jack', 'Smith');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO customer VALUES (3, 'Will', 'Powers');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO customer VALUES (4, 'Peter', 'Miller');
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> CREATE TABLE sales (
-> code int(11) default NULL,
-> sales_rep int(11) default NULL,
-> customer int(11) default NULL,
-> value int(11) default NULL
-> ) ;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> INSERT INTO sales VALUES (1, 1, 1, 2000);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales VALUES (2, 4, 3, 250);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales VALUES (3, 2, 3, 500);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales VALUES (4, 1, 4, 450);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales VALUES (5, 3, 1, 3800);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales VALUES (6, 1, 2, 500);
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> CREATE TABLE sales_rep (
-> employee_number int(11) default NULL,
-> surname varchar(40) default NULL,
-> first_name varchar(30) default NULL,
-> commission tinyint(4) default NULL,
-> date_joined date default NULL,
-> birthday date default NULL
-> ) ;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> INSERT INTO sales_rep VALUES (1, 'Ray', 'Sol', 10, '2000-02-15', '1976-03-18');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales_rep VALUES (2, 'Goal', 'Charlene', 15, '1998-07-09', '1958-11-30');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales_rep VALUES (3, 'Soy', 'Mike', 10, '2001-05-14', '1971-06-18');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sales_rep VALUES (4, 'Ray', 'Mongane', 10, '2002-11-23', '1982-01-04');
Query OK, 1 row affected (0.00 sec)
mysql>
mysql>
mysql>
mysql> SELECT first_name,surname FROM sales_rep WHERE
-> sales_rep.employee_number IN (SELECT code FROM sales WHERE
-> value>1000);
+------------+---------+
| first_name | surname |
+------------+---------+
| Sol | Ray |
+------------+---------+
1 row in set (0.00 sec)
mysql>
mysql> drop table sales;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table customer;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table sales_rep;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
Related examples in the same category