语法:
[<基准列名>] [关联表 <关联表名>] [<关联列名>] [方式] [条件 <条件式>]
参数:基准列名
左表(当前表)中用于匹配的一个或多个字段,包括#(即位置字段/行号字段)。非必要参数,省略参数值时表示参数值是上下文中的焦点列;类型是字段标识或字段标识的集合;参数名必须省略。
例子:
员工表与部门表通过部门编号字段关联,删除员工表中关联不上的记录。
部分NLC代码:匹配 部门编号… //省略号表示这句代码不完整,还不能独立运行
参数:关联表 <关联表名>
用于匹配到左表上的右表。必要参数;类型是表标识;参数名不能省略。
例子:
员工表与部门表通过部门编号字段进行等值匹配,过滤出员工表中匹配得上的记录。
部分NLC代码:匹配 部门编号; 关联表 部门表… //本例与上面例子是相同的计算的两种表达方式。
参数:关联列名
右表用于匹配的一个或多个字段,包括#(即位置字段/行号字段)。非必要参数,省略参数值时表示参数值是主键或右表中与基准列同名的列;类型是字段标识或字段标识的集合;参数名必须省略。
例子:
通过部门编号字段,从员工表中过滤出与部门表能关联上的记录。
部分NLC代码:匹配 部门编号; 关联表 部门表; 部门编号… //本例的关联列名与基准列名同名,所以可省略。本例与上面2个例子是相同计算的不同表达方式。
参数:方式
关联后的过滤方式,有两个参数值(枚举值):不匹配删除、匹配删除。前者表示留下能匹配上的记录,后者表示留下不能匹配的记录。
非必要参数,无此参数时表示参数值缺省是"不匹配删除",比如上一个例子;枚举类型;参数名必须省略。
例子:
员工表与部门表通过部门编号字段关联,保留员工表中关联不上的记录
NLC:匹配 部门编号; 关联表 部门表; 部门编号; 匹配删除
参数:条件 <条件式>
本参数是关联时的条件式,通常含有基准表(左表)的字段和右表的字段,其中基准表的字段必须用@后缀,非基准表的字段一定没有@后缀,比如NLC代码:订单日期>注册日期@,这里字段订单日期是右表字段,而字段注册日期是左表字段。本参数的作用类似于SQL中"join on… where…"中的where条件,比如SQL代码:"select 左表.* from 左表 join 右表 on 左表.id=右表.id where 右表.订单日期>左表.注册日期",NLC条件式类似SQL中的"右表.订单日期>左表.注册日期"。
非必要参数;条件式;参数名不能省略。
例子:
员工表与部门表通过部门编号字段关联,按条件式(员工工资@>=5000 且 ["销售一部","销售二部","产品部"] 包含 部门名称)进行过滤,保留员工表中关联不上的记录。
NLC:匹配 部门编号; 关联表 部门表; 部门编号; 匹配删除; 条件 (员工工资@>=5000 且 ["销售一部","销售二部","产品部"] 包含 部门名称)
测试:
1.通过订单编号字段,保留订单例子表中与订单明细表有关联的记录
识别:1; 关联过滤
规范:1; 关联过滤 订单编号; 关联表 订单明细表; 不匹配删除
2.焦点表通过产品id、库房id,与价格表的产品id,库房id进行关联,条件式"@库存>1000 且 产品价格<2000",删掉有关联的记录。
识别:1; 关联过滤
规范:1; 关联过滤 产品id,库房id; 关联表 价格表; 产品id,库房id; 匹配删除; 条件 (@库存>1000 且 产品价格<2000)