2018年8月28日 星期二

Access - 使用 Access 2007 JOIN 資料庫多表聯集查詢(六)

Access - 使用 Access 2007 JOIN 資料庫多表聯集查詢(六):

JOIN 是根據兩個或多個表(Tables)中的列之間的關係,從這些表中查詢資料。筆者很多時候要面對更新資料庫內的資料,而且數量非常大,需要使用 JOIN 的功能作對比來更新。

SQL JOIN 的類型
在 Access 中 JOIN 共有下面幾種類型:
在 Access 中 JOIN 的類型
例:Table A – Company Information 和 Table B – Company Product Qty
Table A – Company Information
Table B – Company Product Qty
1. INNER JOIN(內連接) 
Inner Join 可以應付大部份的結合查詢需求,連接操作如求兩個表的交集,Inner Join 有兩種寫法,差異在把結合條件設定在 「WHERE」子句或「FROM」子句中。每當相同的欄位中有相符的值時,合併來自兩個資料表的記錄。

INNER JOIN 運算由下列各部分組成:
部分
描述
table1, table2
結合記錄的來源資料表名稱。
field1, field2
連接欄位的名稱。若非數值,則欄位必須是相同的資料類型,且儲存相同類型的資料,但名稱不必相同。
compopr
任何關聯性比較運算子:"=""<"">""<="">=" "<>"

SQL 查詢:SELECT A.COMPANY, B.PARTS, B.QTY_2018 FROM A INNER JOIN B ON (A.[COMPANY_CODE]=B.[COMPANY_CODE]) AND (A.PARTS=B.PARTS); 

INNER JOIN 查詢結果
2. LEFT JOIN (左連接) 
使用 Left Join 運算建立左方外部聯結。左方外部聯結包含來自兩個資料表的第一個(左方:Table A)的所有記錄為基礎,即使第二個(右方:Table B)資料表中的記錄沒有相符的值。Left Join 的含義就是求兩個表的交集外加左表剩下的數據。 。 

LEFT JOIN 運算由下列各部分組成:
部分
描述
table1, table2
結合記錄的來源資料表名稱。
field1, field2
連接欄位的名稱。欄位必須有相同資料類型且含有相同種類的資料,但是不必有相同名稱
compopr
任何關聯性比較運算子:"=""<"">""<="">=" "<>"

SQL 查詢:SELECT A.COMPANY_CODE, A.COMPANY, B.PARTS, B.QTY_2018 FROM A LEFT JOIN B ON (A.COMPANY_CODE=B.COMPANY_CODE) AND (A.PARTS=B.PARTS); 
Access LEFT JOIN查詢結果,即使右表中沒有匹配,也從左表返回所有的行。
3. RIGHT JOIN (右連接) 
使用 Right Join 運算建立右方外部聯結。右方外部聯結包含來自兩個資料表的第二個(右方:Table B)的所有記錄為基礎,即使第一個(左方:Table A)資料表中的記錄沒有相符的值。Right Join 就是求兩個表的交集外加右表剩下的數據。

RIGHT JOIN 運算由下列各部分組成:
部分
描述
table1, table2
結合記錄的來源資料表名稱。
field1, field2
連接欄位的名稱。欄位必須有相同資料類型且含有相同種類的資料,但是不必有相同名稱
compopr
任何關聯性比較運算子:"=""<"">""<="">=" "<>"

SQL 查詢:SELECT A.COMPANY_CODE, A.COMPANY, B.PARTS, B.QTY_2018 FROM A RIGHT JOIN B ON (A.PARTS=B.PARTS) AND (A.COMPANY_CODE=B.COMPANY_CODE);
Access RIGHT JOIN 查詢結果,即使左表中沒有匹配,也從右表返回所有的行
2018年 8月 28日 天氣報告
氣溫:25.2@ 19:40
相對濕度:百分之 94%
天氣:雨

沒有留言:

張貼留言