关联查询

阅读(1875) 标签: 关联查询, 关联, 查询,

在查询场景中,除单表明细查询外,多表关联查询也很常见。这些操作在DQL查询中均能得到完整支持,通过对元数据进行高级设计,再结合外键属性化、同维表等同化方法,即可实现多表关联的透明化处理。用户只需对DQL语句稍作调整,便能完成关联查询。

[集算器安装路径]\esProc\esproc-services\datalogic\conf下提供了完整的元数据文件demo.glmd,其中保存了各个虚表的定义、虚表转换成的DQL表以及表间关系的定义。接下来的演示皆是用的demo.glmd

 

从上图可以看到有OrdersCustomerCity三张表,OrdersCustomer使用CustomerID做关联,CustomerCity使用CityCode做关联。那么根据这样的表间关系,如何统计不同城市中客户的订单信息呢?如果业务人员想要按年月日层级来观察不同时期的订单情况,又该如何实现呢?

下面我们仍然通过demo.glmd元数据文件来演示如何实现这样的需求,进而介绍DQL查询中外键查询和多层查询的用法。

外键查询

DQL表的Foregion key 页面中,可以点击【追加行】按钮,自己指定外键

例如对OrdersCustomerCity表做外键关联,给Orders表增加外键,外键名称为fk1,外键表为Customer,外键字段为CustomerID

Customer表增加外键,外键名称为fk_City,外键表为City,外键字段为CityCode

保存元数据文件之后,在菜单栏中点击Tool - DQL queryOrders表通过【外键字段.外键表字段】的形式查询CustomerCity表的数据,DQL语法及结果如下:

DQL: SELECT OrderID,CustomerID.CustName,CustomerID.CityCode.City,EmployeeID,ReceiveDate,ShipDate,Amount FROM Orders

外键关联查询时,除了【外键字段.外键表字段名】的用法,还可以使用【外键名称.外键表字段】的形式,同样查询上面的数据,DQL语法及结果如下:

DQL: SELECT OrderID,fk1.CustName,fk1.fk_City.City,EmployeeID,ReceiveDate,ShipDate,Amount FROM Orders

想要了解更多查询语法,可参考关联查询语法章节。

多层查询

点击,添加YearYearMonthDay三个假表(假表的详细介绍可参见:假表层函数)。

 

  

 

Day维增加层函数:

Orders表增加外键关联,外键名称为fk3,外键字段为ShipDate,引用字段为Day表的Day字段:

保存元数据文件之后,在菜单栏中点击Tool - DQL query,对Orders表通过【外键#层函数】的形式查询年层次上的汇总数据,DQL语法及结果如下:

DQLSELECT sum(Amount) Total ON Year FROM Orders BY ShipDate#Year

 

想要了解更多查询语法,可参考关联查询语法章节。