1

mysqlで次のように結果を取得するにはどうすればよいですか?

すべての製品を ID でグループ化し、それが属するカテゴリを表示したいと考えています。
どうすれば1つのSQLで取得できますか?
ここに画像の説明を入力

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `a`
-- ----------------------------
DROP TABLE IF EXISTS `a`;
CREATE TABLE `a` (
  `products_id` int(11) NOT NULL,
  `products_name` varchar(255) default NULL,
  PRIMARY KEY  (`products_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of a
-- ----------------------------
INSERT INTO `a` VALUES ('1', 'hello');
INSERT INTO `a` VALUES ('2', 'world');




SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `b`
-- ----------------------------
DROP TABLE IF EXISTS `b`;
CREATE TABLE `b` (
  `products_id` int(11) NOT NULL,
  `categories_id` int(11) NOT NULL,
  PRIMARY KEY  (`products_id`,`categories_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of b
-- ----------------------------
INSERT INTO `b` VALUES ('1', '1');
INSERT INTO `b` VALUES ('1', '2');
INSERT INTO `b` VALUES ('2', '1');
INSERT INTO `b` VALUES ('2', '3');
4

2 に答える 2

1

これはあなたが望むものですか?

SELECT a.products_id, a.products_name, 
GROUP_CONCAT(CONVERT(b.categories_id,CHAR(8))) as products_to_categories
FROM a,b 
WHERE a.products_id = b.products_id
GROUP BY a.products_id, a.products_name

http://www.sqlfiddle.com/#!2/39edfc/3/0のフィドル

フィドルでの結果の画像

ここに画像の説明を入力

于 2013-08-19T03:26:45.070 に答える
1

内部結合、応援を使用する別の方法があります =)

SELECT a.products_id, a.products_name,group_concat(b.categories_id)  
FROM a
INNER JOIN b ON a.products_id = b.products_id
group by a.products_id, a.products_name
于 2013-08-19T03:39:40.843 に答える