我是用iclient进行空间查询(通过选中矩形图层和点数据集图层进行相交查询),方法如下:
queryParam = new SuperMap.REST.FilterParameter({
name:"RISKMAP_ADDRESS@ORCL_riskcontrol",
attributeFilter:"exists (select 1 from riskmap_main where "+this.nowdate+this.riskMapData.sqlName+".SMID = riskmap_main.ADDRESSID and"+this.sumAmount+this.MapCode+this.policyno+" riskmap_Main.sumAmount<>'0'"+this.powerSQL+ this.sumPay+") and VALIDSTATUS = '1'"+this.address,
});
最终的过滤条件attributeFilter为: exists (select 1 from riskmap_main where sysdate between RiskMap_Main.STARTDATE and RiskMap_Main.ENDDATE
and SMDTV_163.SMID = riskmap_main.ADDRESSID and riskmap_Main.sumAmount<>'0' and
(( EXISTS ( select prpDcompany.comCode from PrpDcompany prpDcompany where riskmap_main.comCode
= prpDcompany.comCode and (prpDcompany.upperPath like '00000000%'))))) and VALIDSTATUS = '1'
而此时是查询不出来数据来的,但是如果我将sql语句执行到数据库中
select * from SMDTV_163 where 1=1 and
exists (select 1 from riskmap_main where sysdate between RiskMap_Main.STARTDATE and RiskMap_Main.ENDDATE
and SMDTV_163.SMID = riskmap_main.ADDRESSID and riskmap_Main.sumAmount<>'0' and
(( EXISTS ( select prpDcompany.comCode from PrpDcompany prpDcompany where riskmap_main.comCode
= prpDcompany.comCode and (prpDcompany.upperPath like '00000000%'))))) and VALIDSTATUS = '1';
是可以查询出来数据的,同样的我将attributeFilter 的过滤条件改为下面的方式也是可以查询出来数据的(同样的改为 attributeFilter:"1=1 and exists ( select 1 from PrpDcompany)" 也可以查到),说明iserver中已经集成了PrpDcompany和RiskMap_Main的业务表数据,如下:
queryParam = new SuperMap.REST.FilterParameter({
name:"RISKMAP_ADDRESS@ORCL_riskcontrol",
attributeFilter:"1=1 and exists ( select 1 from riskmap_main)"
});
请问一下,这是什么原因呢? 是iclient要求的过滤条件的数据不能过多吗?还是有其他的原因呢? 麻烦老师帮忙解答一下