Coldfusion Queryappend的任何自定义函数
Queryappend在Coldfusion-18中,而不是在Coldfusion-16中 有人能为Queryappend推荐任何定制的coldfusoin函数吗 假设我有两个查询:Coldfusion Queryappend的任何自定义函数,coldfusion,coldfusion-2016,Coldfusion,Coldfusion 2016,Queryappend在Coldfusion-18中,而不是在Coldfusion-16中 有人能为Queryappend推荐任何定制的coldfusoin函数吗 假设我有两个查询: Query-1 select * from user where userid > 10 order by userid asc Query-2 select * from user where userid < 10 order by userid desc Query append should
Query-1
select * from user where userid > 10 order by userid asc
Query-2
select * from user where userid < 10 order by userid desc
Query append should return folowing:
userid username
11 AA
12 BB
13 CC
9 MM
8 NN
7 OO
提前感谢这里有一种方法可以做到这一点
<cfscript>
IDList1 = '1,2,3';
IDList2 = '6,5,4';
NameList1 = 'Fred,Wilma,Pebbles';
NameList2 = 'Barney,Betty,Bam,Bam';
Flinstones = QueryNew("UserID,UserName", 'integer,varchar');
Rubbles = QueryNew("UserID,UserName", 'integer,varchar');
for (i = 1; i <=3; i++) {
QueryAddRow(Flinstones);
QuerySetCell(Flinstones, 'UserID', i);
QuerySetCell(Flinstones, 'UserName'
, ListGetAt(NameList1, i));
QueryAddRow(Rubbles);
QuerySetCell(Rubbles, 'UserID'
, ListGetAt(IDList2, i));
QuerySetCell(Rubbles, 'UserName'
, ListGetAt(NameList2, i));
}
</cfscript>
<cfquery name="All" dbtype="query">
select UserID, UserName
from Flinstones
order by UserID
</cfquery>
<cfloop query = "Rubbles">
<cfset QueryAddRow(All)>
<cfset QuerySetCell(All, 'UserId', UserId,
All.recordcount)>
<cfset QuerySetCell(All, 'UserName', UserName,
All.recordcount)>
</cfloop>
<cfdump var="#all#">
你可以玩玩它
将此逻辑放入一个接受两个查询并返回第三个查询的函数中并不难。这里有一种方法可以实现这一点
<cfscript>
IDList1 = '1,2,3';
IDList2 = '6,5,4';
NameList1 = 'Fred,Wilma,Pebbles';
NameList2 = 'Barney,Betty,Bam,Bam';
Flinstones = QueryNew("UserID,UserName", 'integer,varchar');
Rubbles = QueryNew("UserID,UserName", 'integer,varchar');
for (i = 1; i <=3; i++) {
QueryAddRow(Flinstones);
QuerySetCell(Flinstones, 'UserID', i);
QuerySetCell(Flinstones, 'UserName'
, ListGetAt(NameList1, i));
QueryAddRow(Rubbles);
QuerySetCell(Rubbles, 'UserID'
, ListGetAt(IDList2, i));
QuerySetCell(Rubbles, 'UserName'
, ListGetAt(NameList2, i));
}
</cfscript>
<cfquery name="All" dbtype="query">
select UserID, UserName
from Flinstones
order by UserID
</cfquery>
<cfloop query = "Rubbles">
<cfset QueryAddRow(All)>
<cfset QuerySetCell(All, 'UserId', UserId,
All.recordcount)>
<cfset QuerySetCell(All, 'UserName', UserName,
All.recordcount)>
</cfloop>
<cfdump var="#all#">
你可以玩玩它
将此逻辑放入一个接受两个查询并返回第三个查询的函数中并不难。模拟ColdFusion早期版本中出现的查询的最简单、可读性最强的解决方案是使用查询qoq,然后使用union all功能通过不提供ORDER by来追加结果qoq条款
这里是gist的一个工作示例模拟ColdFusion早期版本中出现的查询的最简单、可读性最强的解决方案是使用查询qoq,然后使用union all功能通过不提供ORDER by子句来追加结果qoq
这是gist的一个工作示例Ben Nadel早在2006年就已经为您完成了这项工作。可能更有效的方法是直接从数据库的初始查询中使用UNION。@Miguel-F,您注意到两个order by子句不同了吗?当我第一次回答这个问题时我也没有。不,直到你指出,我才注意到这一点。也许是打字错误?组合结果的例子都是递增的。Ben Nadel早在2006年就已经为您完成了这项工作。可能更有效的方法是直接从数据库的初始查询中使用UNION。@Miguel-F,您注意到两个order by子句不同了吗?当我第一次回答这个问题时我也没有。不,直到你指出,我才注意到这一点。也许是打字错误?组合结果示例都是升序的。它认为查询的查询方法更干净。确实如此,但它没有提供正确的解决方案。问题中的两个查询具有不同的order by子句。它认为查询中的查询方法更干净。确实如此,但没有提供正确的解决方案。质询中的两项质询按条文的先后次序不同。