码迷,mamicode.com
首页 > 其他好文 > 详细

集算器实现外键功能的代码示例

时间:2014-08-12 17:42:05      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:集算器   例子   外键   

    如果字段或字段组合k是表M的主键,而k也同时存在于表B,则k就是B的外键。外键维系着表之间的关联关系,是结构化数据计算最重要的概念之一。集算器可以通过对象引用方便地实现外键功能,下面用几个例子来说明:

   例1 关联主子表1

   订单表(order)是子表,员工表(emp)是主表,请将emp关联到order中,显示emp中的NameGenderSalary字段以及order中的OrderID,Amount字段。

    说明:本例只用到emporder,之后的例子还要用到部门表(dep),三者外键关系如下。

bubuko.com,布布扣

    数据可以来自于数据库或文本,比如:

         order=esProc.query("selectOrderID,SellerId,Amount,OrderDate from sales")

         emp=esProc.query("selectEId,Name,Gender,Birthday,Dept,Salary from emp")

         dep=esProc.query("select* from department")

集算器代码

         A3=order.switch(SellerId, emp:EId)

         A4=order.new(OrderID,Amount,SellerId.Name,SellerId.Gender,SellerId.Salary)

计算结果

bubuko.com,布布扣

代码解读

    A3:将order中的SellerID替换成emp中对应的记录,建立两者的外键关系。

    A4:取order中的OrderIDAmount字段,通过关联引用取emp中的NameGenderSalary字段。可以看到,用对象引用可以从order直接访问emp中的字段,省去了复杂难懂的join语句。

 

2按照主表条件查询子表

    找出薪水大于10000的女性销售签下的订单。

集算器代码:

         A3=order.switch(SellerId, emp:EId)         /同上一个例子

         A5=order.select(SellerId.Salary>10000&& SellerId.Gender=="F")

计算结果

bubuko.com,布布扣

      点击上述蓝色超链接,可以看到对应的员工信息为:

bubuko.com,布布扣

3:按照主表分组

    计算各部门的销售额。

集算器代码:

    A3=order.switch(SellerId, emp:EId)         /同上一个例子

    A5=order.groups(SellerId.Dept;sum(Amount))

计算结果:

  bubuko.com,布布扣

    可以给字段改名,比如order.groups(SellerId.Dept:dt;sum(Amount):amt),改名后的效果如下:

bubuko.com,布布扣

 

4:较复杂的多表关联

     对于销售额超50000的部门,请找出其部门经理的名字。

集算器代码:

         A3=order.switch(SellerId,emp:EId)        

         A4=dep.switch(Manager,emp:EId)

         A5=emp.switch(Dept,dep:DeptNo)

         A6=order.groups(SellerId.Dept:dt;sum(Amount):amt)

         A7=A6.select(amt<=50000).(dt).(Manager).(Name)

计算结果:

bubuko.com,布布扣

代码解读:

         A3,A4,A5:建立完整的外键关系。

         A6: 计算各部门的销售额(见上一例子)。即:

bubuko.com,布布扣

    A7:使用对象引用直观求解。表达式A6.select(amt<=50000).(dt).(Manager).(Name)可以根据句号分解为四步,即:

    1A6中找出销售额超50000的记录。

    2取得dt字段对应的记录(在dep表中)。

    3取得Manager字段对应的记录(在emp表中)。

    4取得Name字段。

具体如下:

A6.select(amt<=50000)  bubuko.com,布布扣

 

.(dt)                                       bubuko.com,布布扣

.(Manager)                       bubuko.com,布布扣

.(Name)                        bubuko.com,布布扣

 


集算器实现外键功能的代码示例,布布扣,bubuko.com

集算器实现外键功能的代码示例

标签:集算器   例子   外键   

原文地址:http://esproc.blog.51cto.com/8028595/1538975

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!