网站大量收购独家精品文档,联系QQ:2885784924

第四章结合与子查询.ppt

  1. 1、本文档共136页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章结合与子查询

結合與子查詢 * 多重巢狀的次查詢(續) 其執行的結果如下: 結合與子查詢 * 多重巢狀的次查詢(續) 次查詢也可以改寫成Join查詢,即如下: SELECT C.CustomerID, C.CompanyName FROM Customers C, Orders O, OrderDetails OD WHERE C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND (O.OrderDate BETWEEN 1996-07-01 AND 1996-07-31) AND OD.ProductID = 1002 結合與子查詢 * 多重巢狀的次查詢(續) 或者 SELECT C.CustomerID, C.CompanyName FROM (Customers C INNER JOIN Orders O ON C.CustomerID = O.CustomerID) INNER JOIN OrderDetails OD ON O.OrderID = OD.OrderID WHERE (O.OrderDate BETWEEN 1996-07-01 AND 1996-07-31) AND OD.ProductID = 1002 結合與子查詢 * 多重巢狀的次查詢(續) 注意:由於日期的格式問題,這個指令無法執行於MS Access;會出現準則運算式的資料型態不符合。若要執行於MS Access則需將 WHERE (OrderDate BETWEEN 1996-07-01 AND 1996-07-31) 改成 WHERE (OrderDate BETWEEN #1996-07-01# AND #1996-07-31#) 或者(於 ODBCView) WHERE (OrderDate BETWEEN {d1996-07-01} AND {d1996-07-31}) 結合與子查詢 * 4.6 結合與次查詢的優缺點 一般而言,假如是一個查詢需求同時可以以次查詢和Join查詢指令做到時,原則上,要選用次查詢或Join查詢可依據問題的特性而定: 當我們需要進行聚合數值比較時,使用次查詢比較好。 當我們需要顯示多個資料表的欄位資料時,使用Join查詢比較好。 結合與子查詢 * 結合與次查詢的優缺點(續) 例如我們想要查詢的需求是各個部門的最低薪資員工,此時使用次查詢即可以輕易地取得我們需要的資料,如: SELECT DepartmentID, EmployeeID, Name, Salary FROM Employees A WHERE A.Salary = ( SELECT MIN(Salary) FROM Employees B WHERE B.DepartmentID = A.DepartmentID ) 然而此時就無法用單一的結合查詢來取得我們需要的資料。 結合與子查詢 * 結合與次查詢的優缺點(續) 例如我們想要列出各部門的員工資料,則使用結合查詢顯得很容易,如: SELECT D.DepartmentID, D.Name, E.EmployeeID, E.Name FROM Departments D, Employees E WHERE D.DepartmentID = E.DepartmentID 但是由於使用次查詢只能顯示外層資料表的資料欄位的資料,此時就無法用次查詢處理了。 結合與子查詢 * 結合與次查詢的優缺點(續) 事實上,我們也可以合併結合查詢與次查詢於同一個查詢之中。 例如我們想要查詢的各個部門的最低薪資員工之員工資料及部門資料,則可以下達如下的指令: 結合與子查詢 * 結合與次查詢的優缺點(續) SELECT D.DepartmentID, D.Name, E.EmployeeID, E.Name, E.Salary FROM Departments D, Employees E WHERE D.DepartmentID = E.DepartmentID AND E.Salary = ( SELECT MIN(Salary) FROM Employees B WHERE B.DepartmentID = D.DepartmentID ) 混合結合和次查詢於一個查詢指令中。 結合與子查詢 * 結合與次查詢的優缺點(續) 這個查詢即含有結合查詢及次查詢,而其執行的結果為如下: 結合與子查詢 * 傳回零或多筆資料的次查詢(續) 其執行的結果如下: 結合與子查詢 * 傳回零或多筆資料的次查詢(續) 而這個指令事實上是同義於(比MAX大即可): SELECT

您可能关注的文档

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档