8

我正在输出一个查询,但需要指定结果的第一行。我正在使用 QueryAddRow() 添加行并使用 QuerySetCell() 设置值。我可以很好地创建行,我可以很好地将内容添加到该行。如果我离开 QuerySetCell() 的行号参数,那么它在输出时作为查询的最后一个结果都很好。但是,我需要它作为查询的第一行,但是当我尝试使用 QuerySetCell 设置行属性时,它只会覆盖我的查询中返回的第一行(即我的 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>

谢谢你的帮助。

4

3 回答 3

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)>

然后使用 query-of-queries 按sortorder列对记录集重新排序。

<cfquery name="qxLookup" dbtype="query">
select xid, xname, execution
from qxLookup
order by sortorder
</cfquery>
于 2010-05-31T04:01:14.293 回答
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>

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

于 2010-06-03T19:40:08.160 回答
0

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

从双重联合中选择“myinsertedvalue” 从可变中选择 myrealvalues

您可以结合 Kens 排序列来获得完整排序。假设您从数据库中获取主要查询!

于 2010-05-31T23:33:22.177 回答