首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在查询输出中运行cfquery

在查询输出中运行cfquery
EN

Stack Overflow用户
提问于 2015-05-12 18:44:47
回答 1查看 414关注 0票数 0

当我试图在上一次查询的输出中运行cfquery时,会得到奇怪的意外结果。

示例:

代码语言:javascript
复制
<cfoutput query="reportInfo">
  <tr>
    <td>#id#</td>
    <td>#name#</td>    
    <cfif Status EQ 'Complete'>
      <cfquery name="submitInfo" datasource="RC">
        SELECT  *
        FROM    Action_Log
        WHERE Form_ID = '#id#'
        AND Action = 'Complete' OR Action = 'Saved'
      </cfquery>    
      <cfset startStamp = submitInfo.Action_Time>
      <cfoutput>startStamp</cfoutput>    
      <td>#startStamp#</td>
    <cfelse>
      <td>No Completion Date</td>
    </cfif>
  </tr>
</cfoutput>

当"StartStamp“输出到页面时,它会为循环中的每个计数显示一次,并对每个ID执行此操作,因此有很多额外的内容。

我认为它应该只在包含查询(reportInfo)输出循环时运行submitInfo查询一次,但这没有发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 22:09:34

(从评论中扩展)

<cfoutput>startStamp</cfoutput>

不确定您想要完成什么,但是您应该摆脱内部的cfoutput tags。这些只有在使用(经常被误解的) feature时才需要。它通常用于消除排序数据中的重复项。但是,如果数据没有正确地排序--或者分组不正确--就会产生您所描述的结果。(如果您不熟悉分组,请参见this example of creating an A-Z type listing)。

尽管如此,应该避免在循环中查询。大多数情况下,您可以使用简单的JOIN实现相同的结果。在不了解第一个查询的情况下,我看不出您有什么理由不能在这里这样做。

在psuedo-sql中,有类似的内容。它使用OUTER JOIN从第一个表检索所有记录,但只检索来自Action_Log的值,这些值具有匹配的ID和状态为“完全”或“保存”的状态。

代码语言:javascript
复制
SELECT  t1.ID
        , t1.Name
        , al.Action_Time AS CompletionDate
FROM    SomeTable t1
      LEFT JOIN Action_Log al 
                ON al.Form_ID = t1.ID 
                AND t1.Status = 'Complete'
                AND al.Action IN ('Complete','Saved')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30199074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档