複製鏈接
請複製以下鏈接發送給好友

INNER JOIN

鎖定
多表聯接建立記錄集是十分有用的,因為某些情況下,需要把數字數據類型顯示為相應的文本名稱,這就碰到了多表聯接建立記錄集的問題。
比如作一個會員註冊系統,共有五個表,會員信息數據表member、會員身份表MemberIdentity、會員權限表MemberLevel、會員類別表MemberSort和會員婚姻狀況表Wedlock。假如想把會員註冊信息全部顯示出來,肯定要將這四個表連起來,否則大家看到的某些會員信息可能只是數據編號。
中文名
內連接
外文名
INNER JOIN
建    立
記錄集
包    含
Memo或 OLE Object數據
使用範圍
INNER JOIN 與部門表及員工表

目錄

INNER JOIN運算

INNER JOIN 運算
組合兩個表中的記錄,只要在公共字段之中有相符的值。

INNER JOIN語法

SELECT * FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
INNER JOIN 運算可分為以下幾個部分:
部分
説明
table1, table2
記錄被組合的表的名稱。
field1, field2
被聯接的字段的名稱。若它們不是由數字構成的,則這些字段必須為相同的數據類型幷包含同類數據,但它們無須具有相同的名稱。
compopr
任何的關係比較運算子:"=," "," "=," 或 "."
説明
可以在 FROM 子句中使用INNER JOIN運算。.這是最普通的聯接類型。只要在這兩個表的公共字段之中有相符值,內部聯接將組合兩個表中的記錄。
可以使用 INNER JOIN 與部門表及員工表選擇每一個部門中的全部員工。反之,可以使用 LEFT JOIN或 RIGHT JOIN運算創建 outer join,從而選擇所有部門(即使有些並沒有員工)或所有員工(即使有些尚未分配到部門)。
若試圖聯接包含 Memo或 OLE Object數據的字段,會導致錯誤。
可以聯接任何兩個相同類型的數值字段。例如,可以聯接 AutoNumber和 Long字段,因為它們類型相似。但不能聯接 Single 和 Double 類型的字段。
下列示例顯示如何在類標識符字段聯接類表及產品表:
SELECT CategoryName,ProductName
FROM Categories INNER JOIN Products
ON Categories.CategoryID=Products.CategoryID;
在上面的示例中,類標識符是已被聯接的字段,但是它並不包含在查詢輸出中,因它並非被包含在 SELECT 語句之中。在這個示例中,若要包含聯接字段,將字段名包含在 SELECT 語句中, Categories.CategoryID.
也可以使用下列語法,在一個 JOIN 語句中鏈接多個 ON 子句:
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compoprtable2.field1 AND
ON table1.field2 compoprtable2.field2) OR
ON table1.field3 compoprtable2.field3)];
也可以使用下列語法,嵌套 JOIN 語句:
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN[(]table3
[INNER JOIN[(] tablex[INNER JOIN...)]
ON table3.field3 compoprtablex.fieldx)]
ON table2.field2 compoprtable3.field3)
ON table1.field1 compoprtable2.field2;
在一個 INNER JOIN 之中,可以嵌套 LEFT JOIN 或 RIGHT JOIN,但是在 LEFT JOIN 或 RIGHT JOIN 中不能嵌套 INNER JOIN。

INNER JOIN教程

有關INNER JOIN的用法,現更加詳細地説明如下:
以會員類別表來説,在其數據表中,1代表普通會員,2代表高級會員,3代表終身會員,在顯示時,假如不將會員類別表與會員具體數據表相關聯,那麼假如我們看到的是一名普通會員的註冊信息,我們只能看到其類別為1,而誰又會知道1代表的是普通會員呢?所以要將會員類別表與會員具體數據表相關聯,關聯後,1就顯示為普通會員,2就顯示為高級會員,3就顯示為終身會員,這樣多好?同理,其它兩個表也要與會員具體數據表相關聯才能把數據編號顯示為相應的名稱。
前天製作網站後台時碰到此問題,在麪包論壇、狂迷俱樂部、藍色理想、和5D多媒體論壇發了貼子求救,都沒有獲得答案,只好自己研究,花了兩天時間終於成功,現將其寫成教程供大家分享,希望大家少走彎路。
本教程是把五個表聯在一起,假如願意,您可以將更多的表聯在一起,方法大同小異啦~
步驟一:用Access軟件建立一個名為Member的數據庫,在其中建五個表,分別為:會員信息數據表member、會員身份表MemberIdentity、會員權限表MemberLevel、會員類別表MemberSort和會員婚姻狀況表Wedlock。
●會員信息數據表member:
MemberID:自動編號,主鍵(ID號)
MemberSort:數字(會員類別)
MemberName:文本,會員姓名
Password:文本(會員密碼)
MemberLevel:數字(會員權限)
MemberIdentity:數字(會員身份)
Wedlock:數字(婚姻狀況)
MemberQQ:文本(QQ號碼)
MemberEmail:文本(會員郵箱)
MemberDate:日期/時間(會員註冊日期)
●會員身份表MemberIdentity:
MemberIdentity:自動編號,主鍵(ID號)
IdentityName:文本(會員身份名稱)
●會員權限表MemberLevel:
MemberLevel:自動編號,主鍵(ID號)
LevelName:文本(會員權限名稱)
●會員類別表MemberSort:
MemberSort:自動編號,主鍵(ID號)
SortName:文本(會員類別名稱)
●會員婚姻狀況表Wedlock
Wedlock:自動編號,主鍵(ID號)
WedlockName:文本(會員婚姻狀況類別)
説明:五個表建好後,您可以自行設置您想要的類別,如會員權限,您可以設置兩個類別--“未付費會員”和“已付費會員”,編號分別為“1”、“2”,如您設置了三個選項,那麼第三個選項的編號當然就是“3”了。
下面我們所要作的工作就是把“1”、“2”之類的編號顯示為“未付費會員”和“已付費會員”,否則,大家誰會知道“1”代表的是“未付費會員”,“2”代表的是“已付費會員”?
步驟二:建DSN數據源,建記錄集
●運行DreamweaverMX軟件,在會員註冊信息顯示頁面建一個名為ConnMember(您也可以起其它的名稱)的DSN數據源。
●點擊服務器行為面板中的“綁定”,建一個名為MemberShow的數據集,“連接”選擇ConnMember,“表格”選擇Member,“列”全選,“排序”選擇MemberDate,降序。點擊“高級”按鈕,修改SQL框中自動生成的代碼:
原代碼為:
Select*
FROM Member
ORDER BY MemberDate DESC
將代碼修改為:
Select*
FROM(((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort)INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel)INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity)INNER JOIN Wedlock ON Member.Wedlock=Wedlock.Wedlock
ORDER BY MemberDate DESC;
修改完代碼後,點擊“確定”,大功告成!
您可以打開記錄集看一下,五個表中的字段全部集成在MemberShow記錄集中,您只要將相應的字段綁定在該字段想顯示的單元格中即可。這下好了,所有的數字編號全部變成了相應的名稱,如會員權限,不再是“1”和“2”的數字形式了,而是變成了相應的名稱“未付費會員”和“已付費會員”。其它的數字編號也變成了顯示的文本名稱,是不是很開心呢?
注重事項:
●在輸入字母過程中,一定要用英文半角標點符號,單詞之間留一半角空格;
●在建立數據表時,假如一個表與多個表聯接,那麼這一個表中的字段必須是“數字”數據類型,而多個表中的相同字段必須是主鍵,而且是“自動編號”數據類型。否則,很難聯接成功。
●代碼嵌套快速方法:如,想連接五個表,則只要在連接四個表的代碼上加一個前後括號(前括號加在FROM的後面,後括號加在代碼的末尾即可),然後在後括號後面繼續添加“INNERJOIN表名XON表1.字段號=表X.字段號”代碼即可,這樣就可以無限聯接數據表了:)
語法格式:
其實INNERJOIN……ON的語法格式可以概括為:
FROM(((表1INNERJOIN表2ON表1.字段號=表2.字段號)INNERJOIN表3ON表1.字段號=表3.字段號)INNERJOIN表4ONMember.字段號=表4.字段號)INNERJOIN表XONMember.字段號=表X.字段號
您只要套用該格式就可以了。
現成格式範例:
雖然我説得已經比較明白了,但為照顧初學者,我還是以本會員註冊系統為例,提供一些現成的語法格式範例,大家只要修改其中的數據表名稱和字段名稱即可。
連接兩個數據表的用法:
FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort
語法格式可以概括為:
FROM表1INNERJOIN表2ON表1.字段號=表2.字段號
連接三個數據表的用法:
FROM(Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort)INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel
語法格式可以概括為:
FROM(表1INNERJOIN表2ON表1.字段號=表2.字段號)INNERJOIN表3ON表1.字段號=表3.字段號
連接四個數據表的用法:
FROM((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort)INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel)INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity
語法格式可以概括為:
FROM((表1INNERJOIN表2ON表1.字段號=表2.字段號)INNERJOIN表3ON表1.字段號=表3.字段號)INNERJOIN表4ONMember.字段號=表4.字段號
連接五個數據表的用法:
FROM(((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort)INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel)INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity)INNER JOIN Wedlock ON Member.Wedlock=Wedlock.Wedlock
語法格式可以概括為:
FROM(((表1INNERJOIN表2ON表1.字段號=表2.字段號)INNERJOIN表3ON表1.字段號=表3.字段號)INNERJOIN表4ONMember.字段號=表4.字段號)INNERJOIN表5ONMember.字段號=表5.字段號
連接六個數據表的用法:略,與上述聯接方法類似,大家舉一反三吧:)
從excel導入到access建立多表查詢。最好首先建立表之間的關係,再修改SQL語句。這樣不容易出錯。