2014-10-11 23 views
1

我有3個關係是否在THETA爲了此事加入

  • 客戶(CUSTOMER_NAME,市)
  • 貸款(loan_number,branch_name,金額)
  • 借款人(CUSTOMER_NAME,loan_number)

查找客戶名稱,城市及其貸款金額。

首先查詢:

SELECT c.customer_name, c.city, l.amount 
FROM borrower b 
JOIN loan l USING (loan_number) 
JOIN customer c USING (customer_name) 

第二個查詢:

SELECT c.customer_name, c.city, l.amount 
FROM customer c 
JOIN borrower b USING (customer_name) 
JOIN loan l USING (loan_number) 

請問這兩個查詢產生相同的結果?

+3

'INNER JOIN's的順序並不重要。甚至更多:優化器可以自由地按照喜歡的方式對它們進行重新排序。 – zerkms 2014-10-11 19:38:51

回答

3

在內部連接(相對於外連接),表的順序並不重要。

2

簡短回答:編號不是問題INNER JOIN(因此爲theta連接)。

Long答案: 兩個或更多表格之間的內部聯接(或簡單聯接)爲您提供表格的交集。將表視爲集合,表格的交集是數據重疊處的集合的公共區域。無論你在哪裏放置臺的事情,有什麼共同設置A,設置B和組C(表A,B表&表C)之間,將不會改變。因此,表的順序不是對於INNER JOIN而言。

當你LEFT OUTER兩個表(兩套)之間的連接,你不只是取兩個集合的交集。實際上,您將放置在左側的整個表格(表格)。同樣,對於RIGHT OUTER JOIN,您正在將您放置在右側的整個(表格)。因此,對於左,右外連接表的順序確實重要

對於FULL OUTER JOIN,您實際上並不僅僅是交叉點,而不僅僅是左側或右側的表格,而是整個兩個表格(或集合)。因此,爲了事情再次FULL OUTER JOIN。