MySQL& ColdFusion混乱

时间:2013-01-03 01:32:06

标签: mysql flex coldfusion flash-builder

我创建了一个查询,用于从MySQL服务器检索一些数据,并且在服务器上直接运行查询时查询效果很好。当我通过像Sequel Pro这样的程序运行查询时,它也可以很好地检索数据。但是,当插入ColdFusion .cfc函数时,它会检索除timestamp字段之外的所有数据。我无法弄清楚为什么我的生活。这是CF函数后跟的查询。

SELECT tbl_names.*, max(tbl_timestamps.tstamp)
FROM tbl_names LEFT JOIN tbl_timestamps
ON tbl_names.name = tbl_timestamps.name
GROUP BY tbl_timestamps.name

<cffunction name="recent_timestamp" output="false" access="remote" returntype="any" >
    <cfset var qAllItems="">
    <cfquery name="qAllItems" datasource="TimeClock">
        SELECT tbl_names.*, max(tbl_timestamps.tstamp)
        FROM tbl_names LEFT JOIN tbl_timestamps
        ON tbl_names.name = tbl_timestamps.name
        GROUP BY tbl_timestamps.name
    </cfquery>
    <cfreturn qAllItems>
</cffunction>

当我运行应用程序时,调用.cfc函数时,它会提取除时间戳之外的所有数据。这是Flash Builder给我的错误:

“返回的对象包含无效的属性名称”max(tbl_timestamps.timestamp)“。如果您使用的是使用组函数的数据库查询,请尝试在查询中使用该组函数的别名。我怎么能解决这个问题?我已经尝试了一切我能找到的东西。提前致谢!

2 个答案:

答案 0 :(得分:4)

只需为max(tbl_timestamps.tstamp)提供别名即可。我猜你正在开发flex / flash项目,你可以远程调用CFC功能。实际上这不是ColdFusion错误,但Flex / flash构建无法使用列名max(tbl_timestamps.tstamp)解析查询,因此给出别名将解决此问题。

您的查询可能如下所示。

        SELECT tbl_names.*, MAX(tbl_timestamps.tstamp) AS maxtstamp
        FROM tbl_names LEFT JOIN tbl_timestamps
        ON tbl_names.name = tbl_timestamps.name
        GROUP BY tbl_timestamps.name

答案 1 :(得分:2)

我很惊讶查询在运行它时不会出错,因为你的select子句有tbl_names。*而你的group by子句有tbl_names.name。要修复它,请更改其中一个,使它们匹配。

就max(tbl_timestamps.tstamp)的别名而言,虽然您不一定需要一个查询在ColdFusion中运行,但如果您想对该字段执行任何操作,则需要一个,例如显示它