我想对来自两个游标的结果进行排序。
让我们考虑两个游标cursor1
和cursor2
。
Cursor1
用于表格X ,Cursor2
用于表格Y 。
Cursor1
使用日期类型开始列对数据进行排序,Cursor2
使用日期类型日期列对数据进行排序。
有些字段在两个表中都很常见,有些则不是。
但是,这两个表之间没有绝对的关系。
问题很明显。组合数据应该是两个游标的排序列表。
目前正在发生的事情是:
我从光标Cursor1
获取排序列表,该列表独立于来自游标Cursor2
的排序列表。
如何合并生成的游标数据,以便按日期(Start and Date
)获取排序列表?
例如:
我收到了这个结果:
| Date | Type | Location |
|:---------------------|------------:|:---------------------:|
| 10-Jul-2013 07:05:00 | Random | Washougal, Washington
| 10-Jul-2013 08:30:00 | Single | Vancouver, Washington
| 10-Jul-2013 07:30:00 | Multiple | Vancouver, Washington
| 10-Jul-2013 15:31:00 | Double | Vancouver, Washington
前两行来自表X,最后两行来自上表中的表Y.
但我想要这个结果:
| Date | Type | Location |
|:---------------------|------------:|:---------------------:|
| 10-Jul-2013 07:05:00 | Random | Washougal, Washington
| 10-Jul-2013 07:30:00 | Multiple | Vancouver, Washington
| 10-Jul-2013 08:30:00 | Single | Vancouver, Washington
| 10-Jul-2013 15:31:00 | Double | Vancouver, Washington
查询应该是:
Cursor1 = Select alpha, beeta, gamma, Remark, id, number from X order by Start ASC
Cursor2 = Select Type, Date, gamma, Location, Obs, number from Y order by Date ASC
从Cursor1获取结果后,我在这样的循环中创建字符串html:
String itemList = "";
itemList += "<tr><td align='left' width='28%' style='font-size:8px;padding-left: 15px'>"
+ cursor1.getString(1)
+ "</td><td width='16%' style='font-size:8px'>"
+ cursor1.getString(0)
+ "</td><td width='10%' style='font-size:8px'>"
+ cursor1.getString(2)
+ "</td><td width='20%' style='font-size:8px'>"
+ "</td><td width='35%'>" + cursor1.getString(3) + "</td></tr>";
然后将此itemList进一步添加到Cursor2
的结果中,以完成两个游标的itemList。
最终的itemList在布局中显示为 html 。
答案 0 :(得分:2)
您可以将两个查询合并到一个查询中。
首先,确保两个结果具有相同的列数。 如果没有,您可能需要向一个查询添加一些虚拟列。
然后将两者合并到UNION ALL:
SELECT alpha, beeta, gamma, Remark, id, number FROM X
UNION ALL
SELECT Type, Date, gamma, Obs, NULL, number FROM Y
然后选择您要订购的整个结果的一列。
(结果的列名来自第一个查询。)
在这种情况下,Start
列不是结果的一部分,因此我们必须添加它(并且Date
列在第二个查询中重复,但这对于其值最终需要在用于排序的结果列中:
SELECT alpha, beeta, gamma, Remark, id, number, Start AS SortThis FROM X
UNION ALL
SELECT Type, Date, gamma, Obs, NULL, number, Date FROM Y
ORDER BY SortThis