JOINs Across Three or More Tables
mysql>
mysql>
mysql> CREATE TABLE titles (
-> titleID int(11),
-> title varchar(100),
-> subtitle varchar(100),
-> edition tinyint(4),
-> publID int(11),
-> catID int(11),
-> langID int(11),
-> year int(11),
-> isbn varchar(20),
-> comment varchar(255),
-> ts timestamp,
-> authors varchar(255),
-> PRIMARY KEY (titleID)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>
mysql>
mysql> INSERT INTO titles VALUES (1,'Linux','Installation',5,1,57,2,2000,NULL,NULL,'2005-02-28 13:34:21','Michael'),
-> (2,'Excel',NULL,NULL,2,3,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','David'),
-> (3,'XML',NULL,NULL,1,2,NULL,1997,NULL,NULL,'2005-02-28 13:34:22','Edwards'),
-> (4,'PHP',NULL,NULL,3,6,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','Tom'),
-> (5,'MySQL','',0,3,34,NULL,2000,'','','2005-02-28 13:34:22','Paul'),
-> (6,'Java',NULL,NULL,4,34,NULL,1999,NULL,NULL,'2005-02-28 13:34:22','Tim');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql>
mysql> CREATE TABLE rel_title_author (
-> titleID int(11),
-> authID int(11),
-> ts timestamp ,
-> PRIMARY KEY (titleID,authID)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
mysql>
mysql> INSERT INTO rel_title_author VALUES (1,1,'2004-12-02 18:37:09'),
-> (2,1,'2004-12-02 18:37:09'),
-> (2,2,'2004-12-02 18:37:09'),
-> (3,3,'2005-02-24 10:46:37'),
-> (3,4,'2005-02-24 10:46:37'),
-> (3,5,'2005-02-24 10:46:37'),
-> (4,6,'2004-12-02 18:37:09');
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql> CREATE TABLE authors (
-> authID int(11) NOT NULL auto_increment PRIMARY KEY ,
-> authName varchar(60),
-> ts timestamp
-> );
mysql>
mysql>
mysql>
mysql>
mysql> INSERT INTO authors VALUES (1,'Tom','2004-12-02 18:36:51'),
-> (2,'Jack','2004-12-02 18:36:51'),
-> (3,'Jane','2004-12-02 18:36:51'),
-> (4,'Amy','2004-12-02 18:36:51'),
-> (5,'Bob','2004-12-02 18:36:51'),
-> (6,'Race','2004-12-02 18:36:51'),
-> (7,'Green','2004-12-02 18:36:51');
mysql>
mysql>
mysql> SELECT title, authName
-> FROM titles, rel_title_author, authors
-> WHERE titles.titleID = rel_title_author.titleID
-> AND authors.authID = rel_title_author.authID
-> ORDER BY title;
+-------+----------+
| title | authName |
+-------+----------+
| Excel | Tom |
| Excel | Jack |
| Linux | Tom |
| PHP | Race |
| XML | Jane |
| XML | Amy |
| XML | Bob |
+-------+----------+
7 rows in set (0.00 sec)
mysql>
mysql>
mysql> drop table titles;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table rel_title_author;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table authors;
Query OK, 0 rows affected (0.00 sec)
Related examples in the same category