在数据库应用开发中,我们经常需要面对复杂的SQL式计算,比如多层分组中的关联计算。在SQL中,分组必须同时进行汇总计算,并且不能进行对象式关联访问,因此处理这类问题会比较复杂,只能用窗口函数嵌套多层子查询这类高级技巧来实现。而本文要介绍的SPL能够支持真正的分组,进行直观的对象式关联访问,从而解决这类问题更加容易。
分组关联在实际业务中遇到的很多,下面以实际业务为蓝本设计一个比较通用的例子,以此说明SPL实现分组关联的具体过程:
计算目标:查询出缺货的DVD分店,即现存的DVD拷贝不到4类的分店。
数据结构:
l Branch表,存储DVD分店信息;
l DVD表,存储DVD的标题及分类信息,DVD是虚拟的数据,比如“变形金刚4”是一个DVD,但它不是一张可见的光盘
l DVDCopy表,存储DVD的多张拷贝,DVD拷贝是真正的光盘,以实体形式存放于各个分店。注意:DVDCopy表以BranchID字段和Branch表关联,以DVDID字段和DVD表关联。
下面是部分数据示例:
Branch表:
BID | Street | City |
B001 | street1 | New York |
B002 | street2 | Houston |
B003 | street3 | LA |
B004 | street4 | Lincoln |
DVD表:
DVDID | Category | Title |
D001 | science fiction | Transformers IV |
D002 | science fiction | Transformers II |
D003 | science fiction |