关联表 SQL 查询

发送反馈


SQL 查询支持设置其他查询条件,如:属性过滤条件(attributeFilter)、分组条件(groupBy)、查询 id 数组(ids)、关联查询项数组(joinItems)、关联外部表(linkItems)、SQL 查询排序的字段(orderBy)等信息。现以关联外部表(LinkItem)为例,构建一个简单 SQL 查询:获取世界地图的 Countries@World 图层 与 Capitals@World 图层中 Capital 字段值相等的数据记录。

对于该 SQL 查询,主要传递参数:queryMode 和 queryParameters。queryMode 说明查询模式(这里是 SqlQuery),queryParameters 是查询的参数,构建查询代码如下:

//关联外表 SQL 查询

function SQLQueryByLinkItem()

{

    var commit=getcommit();

    var uri="http://localhost:8090/iserver/services/map-world/rest/maps/World Map/queryResults.rjson";

    //设置请求体参数

    var entry={};

    entry.queryMode="SqlQuery";

entry.queryParameters={

    "startRecord": 0,

    "queryParams": [{

        "name": "Capitals@world",

        "linkItems": [{

            "datasourceConnectionInfo": {

                "engineType": "UDB",

                "readOnly": false,

                "connect": true,

                "openLinkTable": false,

                "alias": "World",

                "exclusive": false

            },

            "name": null,

            "foreignKeys": ["Capital"],

            "primaryKeys": ["Capital"],

            "linkFilter": "Capital = Capital",

            "foreignTable": "Countries"

        }]

    }],

    "expectCount": 100000,

    "queryOption": "ATTRIBUTEANDGEOMETRY"

};

    commit.open("POST",encodeURI(uri),false,"","");

    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    //alert(toJSON(entry));

    commit.send(toJSON(entry));    

    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。

    var response = json_parse(commit.responseText, null);       

    //获取用作显示的 Div 容器。

    var container = document.getElementById('container');

    container.innerHTML="";

    //判断查询是否成功

    if(!response.succeed)

    {

        //查询失败

        container.innerHTML+="<p>查询失败</p>";

        container.innerHTML+="<p>错误码:"+response.error.code+"</p><p>错误原因:"+response.error.errorMsg+"</p>";

    }else

    {

        //查询成功

        container.innerHTML+="<p>查询成功</p>";

        container.innerHTML+="<p>查询结果(queryResult)资源的 URI 为:"+response.newResourceLocation+"</p>";

    }   

}

其中,linkItems 用于指定关联外部表的参数,详见LinkItem,其他参数可参考SQL 查询

执行查询,得到 URI 地址类似 http://localhost:8090/iserver/services/map-world/rest/maps/World Map/queryResults/3jx2ilcv_c81111e25a7f404ea36b2c8690756453.rjson 的 queryResult 资源,该 queryResult 资源包含了符合条件的记录的相关信息。

queryResult 资源的进一步解析请参见 queryResult 的解析