本章簡略講述本人在例項開發中遇到的多表查詢的問題
其中主要講述
select a.*,b.*,c.* from a,b,c
和select a.*,b.*,c.* from 表a inner join 表b on a.id=b.id inner join 表c on a.code=c.code
的區別最近遇到乙個這樣的專案需求——要求頁面集合顯示三個關聯表的資訊。
由於實際專案裡出現的字段比較多,現在簡化說明如下:
table a 含有字段 username,cardcode,itamcode
table b 含有字段 cardcode,cardname
table c 含有字段 itaonherttamcodwww.cppcns.come,itamname
其中介面要在乙個資料集裡同時出現username,cardname,itamname
話說雖然學過sql 內聯,外聯的問題,但是以前的專案基本出現的都是兩個表的關聯實現,現在是第一次用到超過兩個表的關聯實現問題。在百度找了一下資料,才發現原來基本原理是一樣的。哈,本人去年才入職,經驗不足,大神們,請別見笑哈!
呃,如果讀者暫程式設計客棧時還不熟悉sql基本內聯,外聯的相關知識,請自覺找度娘面壁去哈,筆者在這裡不熬述了。長話短說,現在進入正題……
發現要實現上面的功能有兩種方法,分別是
select a.username,b.cardname,c.itamname from a,b,c
和select a.username,b.cardname,c.itamname from 表a inner join 表b on a.cardcode=b.cardcode inner join 表c on a.itamcode=c.itamcode
(如果欄位是差異化的話,可以略寫表名)
就上面的語法來說,其實兩種實現方法的效果是一樣的,但如果真要較真細說優劣的話,還是第二種實現方法比較實用的。
用inner j程式設計客棧oin(全外聯)的寫法, 不僅可以按照實際需求自由轉化left join(左外聯)和right join(右外聯),而且註明了結合的順序, 特別是支援了sql文優化的方便。
還有乙個就是說當我某個字段可以為null的時候,第一種查詢方法得出的值其實是不完全的。比如說我上面的例子中當table c 的itanname 並非必填的時候,只能通過左外連線(left join)來實現我們需要的效果。
有興趣的同學可以自己操作一下,驗證下兩種方法的不同。
本文標題: 深入sql多表差異化聯合查詢的問題詳解
本文位址: /shujuku/mysql/96130.html
差異化競爭 提公升ITO服務的價值
ito information technology outsourcing 即資訊科技外包。包括產品支援與專業服務的組合,用於向客戶提供it基礎設施 或企業應用服務 或同時提供這兩方面的服務,從而確保客戶在業務方面取得成功。ito需要更創新的服務更差異化的競爭 ito服務在中國已經發展了多年。早年...
軟體是高階儲存實現差異化的關鍵
emc認為,未來的資料中心基礎架構將朝著標準化 虛擬化 自動化發展。在這一背景下,x86架構以及多核cpu 快閃儲存器和虛擬化技術將成為雲資料中心基礎架構的核心技術三要素。emc針對雲資料中心提供的整體參考架構平台vce在過去三年中銷售額超過10億美元。分層儲存成主流 經過幾次更新換代,如今emc ...
差異化資料模型轉換的新捷徑
煮酒論天擎之x引擎 前幾日與軟體研發圈一老友灼酒小聚,老友自述最近覓得一單好生意,系統各項功能與客戶需求極其吻合。正準備為之祝賀時,卻聽老友一聲長嘆繼續說道,哎,萬事俱備只欠一條啊,對方要求軟體產品須遵循客戶企業自身的資料庫開發規範,如表名 欄位名 索引名 函式名 儲存過程名 包名等等須與規範相符,...