All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
XML入门教程:掌握学习 XML 语法规则_[XML教程]
ASP.NET与数据库相关技巧_[Asp.Net教程]
开发技术展望,Asp.net3.0,蓝图_[Asp.Net教程]
asp.net上传图片并同时生成缩略图_[Asp.Net教程]
一个有关SQL Server连接的问题_[SQL Server教程]
.NET生成静态页面并分页_[Asp.Net教程]
当ASP.NET撞上JSF之模板化、式样和主题_[Asp.Net教程]
asp.net的GridView控件使用大全_[Asp.Net教程]
Asp.net中创建和使用Ado.net_[Asp.Net教程]
PHP实例:PHP生成带有雪花背景的网站验证码_[PHP教程]
Reading number is top 10 pictures
Beauty ZhiHuiLin1
A man's favorite things7
来几张有特色的图片
Female star bikini
The cat shit
The money of more than 100 countries and regions8
29 the belle stars after bath figure2
Discharge accidentally Actresses by the breast4
美丽的桂林风光2
Sora aoi possession photo2
Download software ranking
apache-tomcat-6.0.33
Unix video tutorial13
塘西风月痕
VeryCD电驴(EasyMule) V1.1.9 Build09081
软件工程思想
传奇私服架设教程
Boxer's Top ten classic battle2
Rio big adventure
致我们终将逝去的青春
WebService在.NET中的实战应用教学视频 → 第4集
归海一刀 published in(发表于) 2014/2/1 0:09:30 Edit(编辑)
SQL,Artisan多层查询条件嵌套功能_[SQL,Server教程]

SQL,Artisan多层查询条件嵌套功能_[SQL,Server教程]

SQL Artisan多层查询条件嵌套功能_[SQL Server教程]

在实际开发过程中我们经常面对一些查询或统计子表信息,对于一层处理还是比较简单,如果二层、三层等或更多时这个时候编写出来的条件就比较复杂和容易出现编写错误的情况。SQL Artisan字段对象除了提供灵活的比较运算功能外,对象的In方法还提供N层条件嵌套的功能,让你在构造查询条件更灵活。


以MSSQL的NorthWind为例:


查询指定雇员在某段时间的销售金额。


处理的表:Employees,Orders,Order Details


在实现过程可以通过表关联查询或直接对目标表进行查询,对目标表直接进行查询就必须把父表的条件以嵌套的方式添加到当前查询条件中。


Employee.Employee->Orders.OrderDate-> Sum(Order Details)作一个反向条件嵌套。


以下是两种查询方法在SQL语句和SQL Artisa组件下的实现。


(代码只是用于表达SQL Artisan组件的功能,对于SQL语句本身存在的其他问题不作讨论)


SQL方法一:


SELECT Sum(UnitPrice*Quantity*(1-Discount)) FROM Employees INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID INNER JOIN [Order Details] ON Orders.OrderID=[Order Details].OrderID where ( ( Employees.EmployeeID = 3 And Orders.OrderDate >= '1997-7-1' ) And Orders.OrderDate <= '1997-8-1')


SQL Artisan方法一:


query = session.CreateQuery(Employees.TBL.INNER(Orders.TBL,Orders._EmployeeID)&


Orders.TBL.INNER(OrderDetails.TBL,Orders._OrderID));


query.Selects= new FieldAdapter[]{SqlMath.Sum(OrderDetails._UnitPrice*OrderDetails._Quantity*(1-OrderDetails._Discount))};


query.Expreesion = Employees._EmployeeID.At(Employees.TBL) ==3 &


Orders._OrderDate.At(Orders.TBL) >= DateTime.Parse("1997-7-1")&


Orders._OrderDate.At(Orders.TBL) <= DateTime.Parse("1997-8-1");


ds = query.ExecuteDataSet();


SQL方法二:


SELECT Sum(UnitPrice*Quantity*(1-Discount)) FROM [Order Details] where OrderID in (select OrderID from Orders where ( ( ( OrderDate >= '1997-7-1'And OrderDate < '1997-8-1' ) And EmployeeID in (select EmployeeID from Employees where ( EmployeeID = 3 )) ) ))


SQL Artisan方法二:


IQuery query = session.CreateQuery(OrderDetails.TBL);


query.Selects= new FieldAdapter[]{SqlMath.Sum(OrderDetails._UnitPrice*OrderDetails._Quantity*(1-OrderDetails._Discount))};


query.Expreesion = OrderDetails._OrderID.In(Orders.TBL,Orders._OrderID,


Orders._OrderDate >= DateTime.Parse("1997-7-1") &


Orders._OrderDate < DateTime.Parse("1997-8-1") &


Orders._EmployeeID.In(Employees.TBL,Employees._EmployeeID,Employees._EmployeeID ==3));


System.Data.DataSet ds = query.ExecuteDataSet();


从以上代码可以看到SQL Artisan组件通过字段对象的In方法方便灵活地把多层条件嵌套起来,在编写这么烦琐的查询条件时用字符串拼揍SQL语句对开发人员来说并不是什么恶梦,但在人手检测其合法性上也是个非常头痛的问题;何况很多时候要面对更复杂的查询条件。


SQL Artisan给你所带来的是完全对象化的条件编写方式并提供开发环境的编译检测,大大提高了条件的编写效率和质量。


其实SQL两个方法的的SQL语句都是通过运行SQL Artisan方法过程中截取的.


相应例子下载


来源:博客园





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.