在前边的章节中,我们学习了多表的联接,但是有时候我们还是需要使用到多重嵌套查询,举一个例子:
假定B还是英语成绩结果集,D则是上课出勤记录,我们要返回一个结果集,在B的基础上增加一列,是该学生对应的缺课记录。
我们假定D的结构为:
学号课程名课程时间缺课
01 英语 2012-3-1 No
01 语文 2012-3-1 Yes
01 英语 2012-3-2 No
02 .......................................
似乎我们可以如下写:
R:=select *,Select ["课程时间"],["缺课"] from D where ["学号"]=["学号"] and ["缺课"]="Yes" end as "出勤记录" from B end;
这个时候,我们发现了一个问题,在字查询中,我们无法直接用["学号"]来标示B和D的学号字段,而这个时候,由于不是使用Join,所以也无法使用[1].["学号"]的模式来识别字段来源。这时,子查询不存在Join的第一个第二个结果集的概念,但存在上一级结果集的概念(例如相对于对D查询的子查询而言,B结果集是D结果集查询的上层结果集)。
为了解决这个上下级的关系,TS-SQL加入了RefsOf关键字。