关联查询

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

通常在做查询时,不仅需要对单表做明细查询,很多情况还需要对多表做关联查询。这种在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

 

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