1

我想对来自两个游标的结果进行排序。

让我们考虑两个游标是cursor1cursor2

Cursor1用于表 XCursor2用于表 Y

Cursor1使用日期类型的列开始对数据进行排序,并Cursor2使用日期类型的列日期对数据进行排序。

有些字段在两个表中都是通用的,有些则不是。

但是,这两个表之间没有绝对的关系。

问题很明显。组合数据应该是来自两个游标的排序列表。

现在发生的事情是:

我从 cursor 获取排序列表Cursor1,它独立于来自 cursor 的排序列表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

4

1 回答 1

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
于 2013-09-04T13:00:04.473 回答