当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Artisan多表查询和统计

MSSQL
SQL数据操作基础(初级)3
SQL数据操作基础(初级)4
SQL数据操作基础(初级)5
SQL数据操作基础(中级)6
SQL数据操作基础(中级)7
SQL数据操作基础(中级)8
SQL数据操作基础(中级)9
SQL数据操作基础(中级)10
如何找出消耗cup的进程信息和执行的语句
改善SQL Server内存管理
减少SQL日志的三种方法
SQL脚本生成的一些BUG(1)
SQL脚本生成的一些BUG(2)
sqlserver日志文件总结及充满处理
启动SQL SERVER时自动执行存储过程
SQL Server 连接基础知识
修改用户定义的数据类型
利用MSSQL sp自制未公开的加密函数
让你的SQL运行速度明显提高
十大绝招保护SQL Server数据库安全

MSSQL 中的 SQL Artisan多表查询和统计


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 101 ::
收藏到网摘: n/a

编写基于几个表的关联查询和统计的确是件烦琐的事情,由于基于字符的描述很多信息难以抽取出来共用,当其他地方需要这种情况的时候又必须重写。为了避免这情况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 str