2006-10-31

SQL Artisan多表查询和统计

来源: 本站收集整理 作者:佚名 评论 0 条
  编写基于几个表的关联查询和统计的确是件烦琐的事情,由于基于字符的描述很多信息难以抽取出来共用,当其他地方需要这种情况的时候又必须重写。为了避免这情况SQL Artisan引用了视图对象,通过视图对象描述数据查询的信息;视图对象有一个最大的好处就是继续,可以从一个已经有的对象(实体对象或视图对象)继续下来扩展新的查询功能描述。实际应用中你可以建立一个基础统计视图对象,然后根据情况派生出具体的统计对象(如:根据不同信息分组,显示那些字段信息等).

下面是一些简单例程代码:

订单销售金额统计基础视图对象

/// <summary>

/// 建立一个简单的订单销售金额统计类

/// </summary>

[TableMap("", TableType.View)]

public class OrderStat:HFSoft.Data.ITableView

{

#region ITableView 成员

public virtual Table GetTable()

{

// TODO: 添加OrderV.GetTable 实现

return DBMapping.Orders.INNER(DBMapping.Employees, DBMapping.Employees.EmployeeID)& DBMapping.Orders.INNER(DBMapping.OrderDetails, DBMapping.Orders.OrderID)& DBMapping.OrderDetails.INNER(DBMapping.Products, DBMapping.Products.ProductID);

}

private Double mTotalize;

[StatColumn("Quantity*[Order Details].UnitPrice*(1-Discount)", StatType.Sum)]

public Double Totalize

{

get

{

return mTotalize;

}

set

{

mTotalize = value;

}

}

#endregion

}

按雇员分组统计情况继续实现

/// <summary>

/// 按雇员进行分组统计

/// </summary>

[TableMap("", TableType.View)]

public class EmployeeTotal:OrderStat

{

private int mEmployeeID;

[ViewColumn("Employees.EmployeeID")]

public int EmployeeID

{

get

{

return mEmployeeID;

}

set

{

mEmployeeID = value;

}

}

private string mEmployeeName;

[ViewColumn("FirstName LastName")]

public string EmployeeName

{

get

{

return mEmployeeName;

}

set

{

mEmployeeName = value;

}

}

}

按产品分组统计继续实现

/// <summary>

/// 按产品进行分组统计

/// </summary>

[TableMap("", TableType.View)]

public class ProductTotal : OrderStat

{

private int mProductID;

[ViewColumn("Products.ProductID")]

public int ProductID

{

get

{

return mProductID;
共2页: 上一页 1 [2] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:共享一劳永逸的数据库编码解决方案  
下一篇:SQL优化实例:从运行30分钟到运行只要30秒
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号