如何从QueryAddRow()中添加一行来自查询结果的第一行?

时间:2010-05-31 01:48:20

标签: coldfusion coldfusion-8

我正在输出查询但需要指定结果的第一行。我正在使用QueryAddRow()添加行并使用QuerySetCell()设置值。 我可以创建行,我可以将内容添加到该行。如果我从QuerySetCell()中删除行号的参数,那么它在输出时作为查询的最后结果都可以正常工作。但是,我需要它作为查询的第一行,但是当我尝试使用QuerySetCell设置row属性时,它只是覆盖我的查询中的第一个返回的行(即我的QueryAddRow()替换了我的查询中的第一个记录)。我目前所拥有的是从recordCount设置变量并安排输出,但必须有一个非常简单的方法来做到这一点,我只是没有得到。 此代码将行值设置为1,但会覆盖查询中第一个返回的行。

<cfquery name="qxLookup" datasource="#application.datasource#">
    SELECT xID, xName, execution
    FROM table
</cfquery>

<cfset QueryAddRow(qxLookup)/>
<cfset QuerySetCell(qxLookup, "xID","0",1)/>
<cfset QuerySetCell(qxLookup, "xName","Delete",1)/>
<cfset QuerySetCell(qxLookup, "execution", "Select this to delete",1)/>

<cfoutput query="qxLookup">
    <tr>
        <td>
            <a href="##" onclick="javascript:ColdFusion.navigate('xSelect/x.cfm?xNameVar=#url.xNameVar#&xID=#qxLookup.xID#&xName=#URLEncodedFormat(qxLookup.xName)#', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">#qxLookup.xName#</a>
        </td>
        <td>#qxLookup.execution#</td>
    </tr>
</cfoutput>

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

我会在原始查询中添加某种排序顺序列,并使用固定值1填充它。

<cfquery name="qxLookup" datasource="#application.datasource#">
SELECT xID, xName, execution, 1 as sortorder
FROM table
</cfquery>

将合成行中该列的值设置为值0

<cfset QueryAddRow(qxLookup)>
...
<cfset QuerySetCell(qxLookup, "sortorder", "0",1)>

然后使用查询查询按sortorder列重新排序记录集。

<cfquery name="qxLookup" dbtype="query">
select xid, xname, execution
from qxLookup
order by sortorder
</cfquery>

答案 1 :(得分:1)

我以前处理过这个问题,对我来说,答案是要有两个单独的查询。

第1,作为您的正常查询,第2个是查询查询,然后对它们进行联合,qofq高于正常查询,这应该按照您想要的顺序给出结果。

这样的事情:

<cfquery name="table_a_results" datasource="">
select a, b, c
from table_a
</cfquery>

cfset table_b = querynew("a, b, c")
cfset temp = queryaddrow("table_b")
cfset temp = querysetcell(table_b,10)
cfset temp = querysetcell(table_b,20)
cfset temp = querysetcell(table_b,30)

<cfquery name="final_query" dbtype="query">
select a, b, c
from table_b
union
select a, b, c
from table_a_results
</cfquery>

然后使用此工具,您可以按照您喜欢的任何顺序放置查询,但请记住按标记使用顺序,以更改顺序......

答案 2 :(得分:0)

只是上面的替代方案,但是您可以将ColdFusion从图片中删除,并仅使用类似的东西(例如在oracle中)执行此操作

从双重中选择'myinsertedvalue' 联盟 从mutable中选择myrealvalues

您可以与Kens排序列结合使用以获得完整订购。假设您从DB获取主要查询!