2 つのカーソルからの結果を並べ替えたい。
2 つのカーソルが と であると考えてみましょcursor1
うcursor2
。
Cursor1
はテーブル XにCursor2
使用され、テーブル Yに使用されます。
Cursor1
タイプ日付の列StartCursor2
を使用してデータをソートし、タイプ date の列Dateを使用してデータをソートしています。
両方のテーブルで共通のフィールドとそうでないフィールドがあります。
ただし、2 つのテーブル間に絶対的な関係はありません。
問題は明らかです。結合されたデータは、両方のカーソルからソートされたリストである必要があります。
現在起こっていることは次のとおりです。
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
上記の結果では、最初の 2 行はテーブル X からのもので、最後の 2 行はテーブル 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として表示されます。