1. 程式人生 > >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 f where 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 f
where p.id = l.pic_id and l.flag_id=f.id GROUP BY p.id;

相關推薦

mysql 聯合查詢

1.表結構 1.1.圖片表(存放圖片) CREATE TABLE `tb_pic` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增長 i

MySQL聯合建立一個新檢視

聯合表就需要先提到幾個關鍵字 先說說 union all 和 union 區別: 1.UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。 請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 SEL

mysql關聯查詢

三張表,需要得到的資料是標紅色部分的。sql如下: select a.uid,a.uname,a.upsw,a.urealname,a.utel,a.uremark, b.rid,b.rname,b.rremark,c.deptid,c.deptname,c.dep

MySQL() 資料庫查詢操作【重要】

一、單表查詢       1.1、查詢所有欄位       1.2、查詢指定欄位       1.3、查詢指定記錄       1.4、帶IN關鍵字的查詢       1.5、帶BETWEEN AND 的範圍查詢       1.6、帶LIKE的字元匹配查詢       

MySQL】多聯合查詢(新增查詢欄位、引數設定)

所羅門王說:沒有智慧解決不了的問題。SELECT * from tb_corporation_and_user      人員所在團隊 (`user_id`, `corporation_id` ,  `role_id` ) SELECT * from tb_corporati

MySQL資料庫多聯合查詢

select info.* from depart as d LEFT JOIN info_sys as info on d.id = info.dept_name left join grade g on info.id = g.sysinfo_id left join

mysql報錯:Column 'id' in field list is ambiguous,以及tp的聯合查詢語句,列印sql等

一、報錯資訊 1、報錯資訊       單純的根據報錯資訊,意思是在聯合查詢中,這幾個表的都有id值,mysql在執行查詢中,不能分辨id是屬於哪個表的。 解決方案: 1、修改表字段,不要都叫id (這個方案不好) 2、給表起別名 (我已經起了,所以

MySQL DML操作--------多聯合查詢實戰

join 聯合查詢 mysql dba 1. 背景 * 多表聯合查詢是把不同表的記錄到一起的一種方式 * 在SQL標準中規劃的聯合(join)大致分內連接,外連接,全連接。其中外連接又分左外連接,右外連接。2. 內連接例子 (inner join) [ 員工 --> 部門 ] 

MySQL增刪改查之【多聯合查詢

包括 實現 鼠標 thead 黃曉明 eba 字符 order 有時 很多時候在實際的業務中我們不只是查詢一張表。 在電子商務系統中,查詢哪些用戶沒有購買過產品。 銀行中可能查詢違規記錄,同時查詢出用戶的 查詢中獎信息和中獎人員的基本信息。 以上只是列的情況

簡單按日期查詢mysql中的記錄數

unsigned 計劃 表結構 記錄 create sig 站點 signed using 測試表表結構:mysql> show create table dr_stats\G 1. row Table: dr_stats Create Table:

ThinkPHP5 聯合查詢

 使用ThinkPHP5 查詢構建起進行三表聯合查詢 $account_info = Db::name('third_party_tasks') ->alias('a') ->join('third_party

Mysql聯合查詢效率分析及優化

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mysql多個欄位關聯另一查詢

如下:一張訂單表多個欄位關聯使用者表: 1.連結串列查詢 SELECT cu.id AS 'id',cu.version AS 'version',cu.cid AS 'cid',cu.uid AS 'uid',cu.shopName AS 'shopName',cu.address AS 'addre

史上最簡單MySQL教程詳解(基礎篇)之多聯合查詢

常用術語 內連線 外連線 左外連線 右外連線 注意事項: 自連線 子查詢 在上篇文章史上最簡單MySQL教程詳解(基礎篇)之資料庫設計正規化及應用舉例我們介紹過,在關係型資料庫中,我們通常為了減少資料的冗餘量將對資料表進行規範,將

mysql常用語句——多聯合查詢(一)

學習筆記: 學生選課資料庫SCT 學生表(學號,姓名,性別,年齡,院系編號,班級) Student(S# char(8),Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6) 院系表(院系編號

HQL語句多聯合查詢Mysql不設定外來鍵關係

如有表A,表B,表C A表包含B表的key,A表包含C表的key。如果我們想用HQL語句查詢A表時帶出A表所有屬性和B表的所有屬性和C表的所有屬性,HQL語句可按一下方法寫。 @NamedQuery(name="getOrderByUserid",query="From A

Mysql聯合查詢效率分析優化

1. 多表連線型別 1. 笛卡爾積(交叉連線) 在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN,或者使用’,’  如: SELECT * FROM table1 CROSS JOIN table2SELECT * FROM table1 JOIN

mysql聯合查詢的四種情況

一般來說,我們為了得到更完整的結果,我們需要從兩個或更多的表中獲取結果,我一般都是用select xxx,xxx from 表1,表2 where 表1.xxx=表2.xxx,我們一般都是進行的是這般的操作,其實mysql中還有一種操作,那就是join的操作,例如底下有兩個

mysql聯合查詢資料多了很慢

1、不要直接去關聯表名查詢,在關聯表外加個select查詢。 select * from tab1 a inner join (select * from tab2) b on a.fld1=b.fld2  2、主表有條件先select一遍主表,關聯表有條件最好放最後wh

MySQL中欄位內容是用逗號分隔的 另一含有對應資料的兩聯合查詢

有時為了資料庫簡潔,存放資料的時候,某一欄位採用逗號隔開的形式進行儲存。 一般情況這個欄位都應該具有如下幾個共性。 被分割的欄位一定是有限而且數量較少的,我們不可能在一個字串中儲存無限多個字元這個欄位所屬的表與這個欄位關聯的表,一定是一對多的關係下面舉例說明: 原表: l