数据库组件 Hxj.Data (十四) (联合查询)
2010-01-27 11:37
411 查看
联合查询在前面的例子中已经出现过,只不过没有细说。
先来个例子吧
生成的sql
[/code]
是非常简单操作就完成了。
还是上例子清爽一些
生成的sql
[/code]
InnerJoin、LeftJoin、RightJoin、CrossJoin、FullJoin这个操作都是类似的。
三个表及以上关联例如
[/code]
关联查询一下变简单了吧。
下面讲union 和 union all
这两个是两个结果的合集,union会区分结果排除相同的,union all 则直接合并结果集合。
生成的sql如下
[/code]
写到这里的时候发现了一个bug,所以请大家重新下载新版本。
union 和 union all用法是一样的,就不再举例子了。
下一节将讲述排序和分组。
先来个例子吧
DbSession.Default.From<Customers>() .InnerJoin<Orders>(Customers._.CustomerID == Orders._.CustomerID) .ToDataTable();
生成的sql
[code]Text: SELECT * FROM [Customers] INNER JOIN [Orders] ON ([Customers].[CustomerID] = [Orders].[CustomerID])
[/code]
是非常简单操作就完成了。
方法 | 联合查询(sql) |
InnerJoin | inner join |
LeftJoin | left join |
RightJoin | right join |
CrossJoin | cross join |
FullJoin | full join |
Union | union |
UnionAll | union all |
DbSession.Default.From<Customers>() .LeftJoin<Orders>(Customers._.CustomerID == Orders._.CustomerID) .Where(Customers._.Country == "USA") .ToDataTable();
生成的sql
[code]Text: SELECT * FROM [Customers] LEFT OUTER JOIN [Orders] ON ([Customers].[CustomerID] = [Orders].[CustomerID]) WHERE [Customers].[Country] = @e3c66f9aa65c498abfd76908621b567a Parameters: @e3c66f9aa65c498abfd76908621b567a[String] = USA
[/code]
InnerJoin、LeftJoin、RightJoin、CrossJoin、FullJoin这个操作都是类似的。
三个表及以上关联例如
DbSession.Default.From<Customers>() .InnerJoin<Orders>(Customers._.CustomerID == Orders._.CustomerID) .InnerJoin<Order_Details>(Order_Details._.OrderID == Orders._.OrderID) .Where(Customers._.Country == "USA") .ToDataTable();
生成的sql:
[code]Text: SELECT * FROM [Customers] INNER JOIN [Orders] ON ([Customers].[CustomerID] = [Orders].[CustomerID]) INNER JOIN [Order Details] ON ([Order Details].[OrderID] = [Orders].[OrderID]) WHERE [Customers].[Country] = @5901349776db425492724e16c3c03a7a Parameters: @5901349776db425492724e16c3c03a7a[String] = USA
[/code]
关联查询一下变简单了吧。
下面讲union 和 union all
这两个是两个结果的合集,union会区分结果排除相同的,union all 则直接合并结果集合。
DbSession.Default.From<Customers>().Where(Customers._.Country == "USA") .UnionAll(DbSession.Default.From<Customers>().Where(Customers._.Country == "UK")) .ToList();
生成的sql如下
[code]Text: SELECT * FROM (( SELECT * FROM [Customers] WHERE [Customers].[Country] = @f5b865bb20b64387b2c1be466c6d0980) UNION ALL ( SELECT * FROM [Customers] WHERE [Customers].[Country] = @b7de905de065418dab5820094c764e1b)) AS Customers Parameters: @f5b865bb20b64387b2c1be466c6d0980[String] = USA @b7de905de065418dab5820094c764e1b[String] = UK
[/code]
写到这里的时候发现了一个bug,所以请大家重新下载新版本。
union 和 union all用法是一样的,就不再举例子了。
下一节将讲述排序和分组。
相关文章推荐
- 数据库组件 Hxj.Data (十四) (联合查询)
- 数据库组件 Hxj.Data (十八) (批处理)
- 数据库组件 Hxj.Data (二十) (分页)
- 数据库组件 Hxj.Data (三十一)(MySQL篇)
- 数据库组件 Hxj.Data (十) (输出组件执行的sql)
- 数据库组件 Hxj.Data (十三) (子查询)
- 数据库组件 Hxj.Data (二十七)(字段组合更新)
- 数据库组件 Hxj.Data (六)(删除操作篇)
- 数据库组件 Hxj.Data (八)(存储过程篇)
- 数据库组件 Hxj.Data (九) (DbSession的其他介绍)
- 数据库组件 Hxj.Data (十) (输出组件执行的sql)
- 数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)
- 数据库组件 Hxj.Data (二十一) (ToScalar<TResult>)
- 数据库组件 Hxj.Data (三十)(Asp.Net 页面自动赋值与取值)
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- 数据库组件 Hxj.Data (二十五)(数据库连接配置 - connectionStrings节点)
- 数据库组件 Hxj.Data (六)(删除操作篇)
- 数据库组件 Hxj.Data(七) (sql篇)
- 数据库组件 Hxj.Data (十一) (where条件)
- 数据库组件 Hxj.Data (十三) (子查询)