0

アドバイスをお願いします。次のようなクエリがある場合、データベースからデータを選択する効率的な方法は何ですか?SELECT * FROM order_list WHERE order_number = ?テーブルには共通の注文番号を持つエントリがあり (私の場合)、同じ注文番号を持つエントリのリストを作成したいのですが、それからそれを撃ったListViewList<Item>最初にすべての注文番号を選択してから、 foreach ループでより良いものを選択して作成または存在させることが効率的かどうかはわかりません。いくつかの例を見つけようとしましたが、失敗しました。この問題を解決するにはどうすればよいですか? ありがとうございました。すべての助けに感謝します。

4

3 に答える 3

1

次のように考えているのと同じものを使用できます。

"select col1,col2,col3 from table   WHERE order_number = ? ", new String[]{YOUR_VARIABLE_HERE};

例えば:

 public Object[] getData(String Id) {
    Cursor c = null;
    ArrayList<String> arrayListProductName = new ArrayList<String>();
    ArrayList<String> arrayListProductId = new ArrayList<String>();
    db=helper.getWritableDatabase();
    c = db.rawQuery("select distinct  Column1,Column2 from Table1inner join Table2 on Table1.anyId = Table2.anyId  Table2.Id = ?", new String[]{Id});   
    c.moveToFirst();
    while(!c.isAfterLast())
    {
        arrayListProductName.add(c.getString(c.getColumnIndex("Column1")));
        arrayListProductId.add(c.getString(c.getColumnIndex("Column2 ")));
        c.moveToNext();
    }
    c.close();
    db.close();
    return new Object[]{arrayListProductName,arrayListProductId};
    }

そしてあなたのActivityクラスで:

helper = new YourDatabaseHelper(this);

Object[] objectScheme = merchandisingHelper.getData(retId);
arrayListSchemeProductName = (ArrayList<String>) objectScheme[0];
arrayListSchemeProductId = (ArrayList<String>) objectScheme[1];

これがあなたを助けることを願っています。

ありがとう

于 2013-01-10T09:46:25.967 に答える
0

GROUPBYで使用SQL

SELECT *
FROM table_name
WHERE column_name = yourvalue
GROUP BY your_columnname

を集計関数と組み合わせて使用​​し、GROUP BY結果セットを 1 つ以上の列でグループ化します。あなたの場合、あなたに基づいてレコードをorder numberグループ化します。グループ化した後、リストビューまたは必要なものに割り当てることができます。

于 2013-01-10T09:35:21.910 に答える
0

私の理解が正しければ、次の方法がより効率的かどうかを知りたいと思います。

  1. WHERE order_number = ?句を使用してフィルタリングする

  2. すべてをロードしてから、ループでフィルタリングします。

その場合、1 の方がはるかに優れたソリューションであり、不要なオブジェクトの作成が大幅に回避されます。行数が多い場合は、列にインデックスを追加すると面白いかもしれませんorder_number

結果を で表示したい場合、 SimpleCursorAdapterを使用してをListviewに接続するのが最善の解決策です。必要なときにのみデータをロードする必要があるため、これは非常に効率的です。SQLiteCursorListViewListView

于 2013-01-10T10:46:29.643 に答える