3

我有在 Microsoft SQL Server 中运行良好并返回预期结果的下表连接。

SELECT     d.id1, c.content_type
FROM       Document2 AS d INNER JOIN
           Content2 AS c ON d.content_id = c.content_id
WHERE     (d.class_id = 1)

但是,当我将语句放入 ColdFusion CFC 时,该语句将不会执行,并且我没有得到任何返回。CFC 文件中的语法是否更改?Microsoft SQL 语法与 ColdFusion CFC 语法不同吗?还是我在这里错过了其他东西?

这是相关的功能。如果我使用不是表连接的简单 SQL 语句,我可以让这段代码工作。但是,当我插入表连接语句时,什么都不会返回。

  remote array function getcontent() {
    var q = new com.adobe.coldfusion.query();
     q.addParam( name="searchParam", value="#searchName#" );
    q.setDatasource("Document");
    q.setSQL("SELECT d.id1, c.content_type FROM Document2 
    AS d INNER JOIN   
    Content2 AS c ON d.content_id = c.content_id WHERE (d.class_id = 1)");

    var data = q.execute().getResult();
    var result = [];
    for(var i=1; i<= data.recordCount; i++) {
        arrayAppend(result, {"id"=data.d.id1[i], "Type"=data.c.content_type[i]});
    }
    return result;
}
4

1 回答 1

8

问题是这行代码:

arrayAppend(result, {"id"=data.d.id1[i], "Type"=data.c.content_type[i]});


您不会像那样引用数据库变量 - 表别名不是列别名的一部分。

你应该简单地使用:

data.id1[i]


如果您确实.在列别名中有 a,那么您需要使用括号表示法来引用它,如下所示:

data['d.id1'][i]

但同样,表别名不是列别名的一部分,因此不需要。

于 2012-08-29T14:45:56.443 回答