2013-03-21 68 views
1

如何在mysql中將2個表加入1?如何在mysql中將2個表加入1?

SET FOREIGN_KEY_CHECKS=0; 

-- ---------------------------- 
-- Table structure for `p` 
-- ---------------------------- 
DROP TABLE IF EXISTS `p`; 
CREATE TABLE `p` (
    `id` int(11) NOT NULL auto_increment, 
    `name` varchar(255) default NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; 

-- ---------------------------- 
-- Records of p 
-- ---------------------------- 
INSERT INTO `p` VALUES ('1', 'jimmy'); 
INSERT INTO `p` VALUES ('2', 'tina'); 


SET FOREIGN_KEY_CHECKS=0; 

-- ---------------------------- 
-- Table structure for `t` 
-- ---------------------------- 
DROP TABLE IF EXISTS `t`; 
CREATE TABLE `t` (
    `id` int(11) NOT NULL, 
    `tag` varchar(255) NOT NULL default '', 
    `value` varchar(255) default NULL, 
    PRIMARY KEY (`id`,`tag`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

-- ---------------------------- 
-- Records of t 
-- ---------------------------- 
INSERT INTO `t` VALUES ('1', 'name', '111'); 
INSERT INTO `t` VALUES ('1', 'age', '30'); 
INSERT INTO `t` VALUES ('2', 'bag', 'miki'); 
INSERT INTO `t` VALUES ('2', 'boy friend', 'jimmy'); 

圖片顯示了我想要得到。 enter image description here

回答

4
SELECT p.id, p.name, 
     GROUP_CONCAT(CONCAT(tag, ':', value)) tags 
FROM p 
     INNER JOIN t 
      ON p.iD = t.id 
GROUP BY p.id, p.name 

輸出

╔════╦═══════╦═══════════════════════════╗ 
║ ID ║ NAME ║   TAGS   ║ 
╠════╬═══════╬═══════════════════════════╣ 
║ 1 ║ jimmy ║ age:30,name:111   ║ 
║ 2 ║ tina ║ bag:miki,boy friend:jimmy ║ 
╚════╩═══════╩═══════════════════════════╝ 
+0

非常完美,非常感謝你 – linjuming 2013-03-21 09:30:15

+0

歡迎您':D' – 2013-03-21 09:30:34