快网首页 | 虚拟主机 | 678棋牌娱乐注册 | 特惠套餐 | 企业邮局 | SQL空间 | IDC业务 | 全球通邮
SQL Server数据库的嵌套子查询
客服中心 新闻动态 常见问题 常用资料 知识学堂 走近客服 在线提问 网站导航
SQL Server数据库的嵌套子查询
网页设计 | 操作系统 | 程序开发 | Dos 命令 | 平面设计 | 办公软件

 您的位置: 快网首页 >> 客服中心 >> 知识学堂 >> 程序开发 >> 文章正文

SQL Server数据库的嵌套子查询
供稿:润之康   时间:2009-2-27 16:48:46

    许多人都对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询)。现在,就让我们追本溯源地探究这个问题。
有两种子查询类型:标准和相关。标准子查询执行一次,结果反馈给父查询。相关子查询每行执行一次,由父查询找回。在本文中,我们将重点讨论嵌套子查询(nested subqueries)。

试想这个问题:你想生成一个卖平垫圈的销售人员列表。你需要的数据分散在四个表格中:人员.联系方式(Person.Contact),人力资源.员工(HumanResources.Employee),销售.销售订单标题(Sales.SalesOrderHeader),销售.销售订单详情(Sales.SalesOrderDetail)。在SQL Server中,你从内压式(outside-in)写程序,但从外压式(inside-out)开始考虑非常有帮助,即可以一次解决需要的一个语句。

如果从内到外写起,可以检查Sales.SalesOrderDetail表格,在LIKE语句中匹配产品数(ProductNumber)值。你将这些行与Sales.SalesOrderHeader表格连接,从中可以获得销售人员IDs(SalesPersonIDs)。然后使用SalesPersonID连接SalesPersonID表格。最后,使用ContactID连接Person.Contact表格。

USE AdventureWorks ;

GO

SELECT DISTINCT c.LastName, c.FirstName

FROM Person.Contact c JOIN HumanResources.Employee e

ON e.ContactID = c.ContactID WHERE EmployeeID IN

(SELECT SalesPersonID

FROM Sales.SalesOrderHeader

WHERE SalesOrderID IN

(SELECT SalesOrderID

FROM Sales.SalesOrderDetail

WHERE ProductID IN

(SELECT ProductID

FROM Production.Product p

WHERE ProductNumber LIKE'FW%')));

GO

这个例子揭示了有关SQL Server的几个绝妙事情。你可以发现,可以用IN()参数替代SELECT 语句。在本例中,有两次应用,因此创建了一个嵌套子查询。

我是标准化(normalization)的发烧友,尽管我不接受其荒谬的长度。由于标准化具有各种查询而增加了复杂性。在这些情况下子查询就显得非常有用,嵌套子查询甚至更加有用。

在你需要的问题分散于很多表格中时,你必须再次将它们拼在一起,此时你会发现嵌套子程序确实有用。


快网保留以上说明的最终解释权
快网,678棋牌娱乐注册,虚拟主机,ASP空间,企业邮局,SQL空间,主机租用,主机托管
热门搜索: FTP 678棋牌娱乐 DNS 备案 空间 邮箱 SQL 主机 快网 中文678棋牌娱乐 虚拟主机
快网,678棋牌娱乐注册,虚拟主机,ASP空间,企业邮局,SQL空间,主机租用,主机托管
快网客服中心的相关信息:
v 如果更改 Sql Server 2008 表字段 不让更改怎么办? [2014-1-26 9:37:14]
v sql2005 远程连接问题解决方法 [2012-5-10 13:13:22]
v Mysql修改设置root密码的命令及方法 [2012-3-19 18:05:19]
v 主机不支持fsockopen函数的解决方法 [2011-5-16 16:19:15]
v 64位Windows 2008/7下配置IIS+PHP出现404.17错误的解决办法 [2011-2-3 16:18:48]
快网,678棋牌娱乐注册,虚拟主机,ASP空间,企业邮局,SQL空间,主机租用,主机托管
快网,678棋牌娱乐注册,虚拟主机,ASP空间,企业邮局,SQL空间,主机租用,主机托管
如果您在使用我们的产品中遇到问题,建议您首先在“常见问题”中查询解决方法;
如果没有找到该问题的解决方法,您可以在“问题搜索”中进行搜索;
如果搜索后没有找到满意答案,您可以“在线提问”,我们会尽快给您答复。
快网,678棋牌娱乐注册,虚拟主机,ASP空间,企业邮局,SQL空间,主机租用,主机托管
678棋牌娱乐注册查询 中文678棋牌娱乐转码
678棋牌娱乐whois查询 网站PR值查询
快网,678棋牌娱乐注册,虚拟主机,ASP空间,企业邮局,SQL空间,主机租用,主机托管

:::::: | 收藏本站 | 关于我们 | 客服中心 | 付款方式 | 联系我们 | 网站律师 | 工作机会 | 网站地图 | 产品管理 | ::::::

Copyright (C) 2003-2008 天津追日科技发展有限公司 dsn-caipiao.top 快网.cn 中国快网.cn