我有以下表连接在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;
}
答案 0 :(得分:8)
问题在于这行代码:
arrayAppend(result, {"id"=data.d.id1[i], "Type"=data.c.content_type[i]});
您没有像这样引用数据库变量 - 表别名不是列别名的一部分。
您应该使用:
data.id1[i]
如果您确实在列别名中有.
,那么您需要使用括号表示法来引用它,如下所示:
data['d.id1'][i]
但同样,表别名不是列别名的一部分,因此不需要。