GROUP_CONCAT groups together character strings.
mysql>
mysql> CREATE TABLE authors (
-> authID int(11) NOT NULL auto_increment PRIMARY KEY ,
-> authName varchar(60),
-> ts timestamp
-> );
Query OK, 0 rows affected (0.00 sec)
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');
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql>
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 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.00 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>
mysql> SELECT title,
-> GROUP_CONCAT(authname ORDER BY authname SEPARATOR ', ')
-> AS authors,
-> COUNT(authors.authID) AS cnt
-> FROM authors, titles, rel_title_author
-> WHERE authors.authID = rel_title_author.authID
-> AND titles.titleID = rel_title_author.titleID
-> GROUP BY titles.titleID
-> HAVING cnt>1
-> ORDER BY title;
+-------+----------------+-----+
| title | authors | cnt |
+-------+----------------+-----+
| Excel | Jack, Tom | 2 |
| XML | Amy, Bob, Jane | 3 |
+-------+----------------+-----+
2 rows in set (0.00 sec)
mysql>
mysql> drop table authors;
Query OK, 0 rows affected (0.00 sec)
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>
Related examples in the same category