The above command will give the following results
mysql> SELECT
-> p.Product_Name,
-> GROUP_CONCAT(c.Category_Name SEPARATOR ', ') AS Category_Names
-> FROM
-> p2c_map AS pc
-> INNER JOIN
-> products AS p ON p.Product_ID = pc.Product_ID
-> INNER JOIN
-> categories AS c ON FIND_IN_SET(c.Category_ID, pc.Category_ID) > 0
-> GROUP BY
-> pc.Product_ID
-> ;
+--------------+------------------------------------+
| Product_Name | Category_Names |
+--------------+------------------------------------+
| Product A | Category 1, Category 2, Category 4 |
| Product B | Category 2, Category 3 |
| Product C | Category 4 |
| Product D | Category 4, Category 1 |
+--------------+------------------------------------+
4 rows in set (0.04 sec)
CREATE TABLE IF NOT EXISTS `categories` (
`Category_ID` int(11) NOT NULL AUTO_INCREMENT,
`Category_Name` varchar(16) collate latin1_bin NOT NULL,
PRIMARY KEY (`Category_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin AUTO_INCREMENT=5 ;
INSERT INTO `categories` (`Category_ID`, `Category_Name`) VALUES
(1, 'Category 1'),(2, 'Category 2'),(3, 'Category 3'),(4, 'Category 4');
CREATE TABLE IF NOT EXISTS `p2c_map` (
`Product_id` int(11) NOT NULL,
`Category_ID` int(11) NOT NULL,
PRIMARY KEY (`Product_id`,`Category_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
INSERT INTO `p2c_map` (`Product_id`, `Category_ID`) VALUES
(1, 1),(1, 2),(1, 4),(2, 2),(2, 3),(3, 4),(4, 1),(4, 4);
CREATE TABLE IF NOT EXISTS `products` (
`Product_ID` int(11) NOT NULL AUTO_INCREMENT,
`Product_Name` varchar(16) collate latin1_bin NOT NULL,
PRIMARY KEY (`Product_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin AUTO_INCREMENT=5 ;
INSERT INTO `products` (`Product_ID`, `Product_Name`) VALUES
(1, 'Product A'),(2, 'Product B'),(3, 'Product C'),(4, 'Product D');
There are 185 comments on this page. [Display comments]