MySQL 三張表聯集查詢
MySQL 三張表聯集查詢
1.表結構
1.1.圖片表(存放圖片)
CREATE TABLE `tb_pic` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增長 id', `url` varchar(255) DEFAULT NULL COMMENT '圖片 url 路徑', `description` varchar(255) DEFAULT NULL COMMENT '圖片描述', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='圖片表';
1.2.標籤表(存放標籤)
CREATE TABLE `tb_flag` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增長 id', `name` varchar(255) DEFAULT NULL COMMENT '標籤名稱', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='標籤表';
1.3.圖片標籤連結資料表(圖片、標籤中間表)
CREATE TABLE `tb_pic_flag_link` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增長 id', `pic_id` int(11) DEFAULT NULL COMMENT '圖片 id', `flag_id` int(11) DEFAULT NULL COMMENT '標籤 id', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='圖片標籤連結資料表';
2.實現的效果
2.1.查詢單張圖片的描述
效果:
查詢語句:
#查詢單張圖片,及其描述SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)from tb_pic p, tb_pic_flag_link l, tb_flag fwhere p.id = l.pic_id and l.flag_id=f.id and p.id=1;
2.2.查詢所有圖片的描述
效果:
查詢語句:
#查詢多張圖片,及其描述SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)from tb_pic p, tb_pic_flag_link l, tb_flag fwhere p.id = l.pic_id and l.flag_id=f.id GROUP BY p.id;
本文永久更新連結地址: