リレーショナルデータベースの利用可能な機能の可能性はありますが、おそらく完了したものではありません。
これは、関係のアドバンテージを利用する場合と非常によく似ています。
外部ID用のテーブルとDescriptors用のテーブルを考えてから、リンクテーブル(関連テーブルまたは他の多くの名前がリレーションシップを結ぶテーブルに使用します)を考えてみましょう。
CREATE TABLE externals (_id PRIMARY INTEGER KEY, extid INTEGER)
CREATE TABLE descriptors (_id PRIMARY INTEGER KEY, descriptor TEXT)
CREATE TABLE link_externals_to_descriptors (external_ref INTEGER NOT NULL, descriptor_ref INTEGER NOT NULL)
だから上記(ノート私は、例示の目的のためにそれらを容易に区別するためのIDの10-12と100-106を使用しました)しているために: -
外観表
_id extid
10 1
11 2
12 3
99 9
記述子表
_id descriptor
100 val-1
101 val-2
102 val-3
103 val-4
104 val-5
105 val-6
106 val-7
リンクテーブル(link_externals_to_descriptors)
external_ref descriptor_ref
1 100
1 101
2 102
2 103
2 104
3 106
99 100
99 102
99 104
99 105
99 107
これは見えるかもしれませんし、非常に複雑かもしれないが、外部IDのと記述子の間の1対多、多対1、さらには多くの多の関係に対処します。
すなわち は、または非マージにマージする必要はないでしょう
(すべてのVal-6は、他の人が使用している除く)
9 val-1, val-3, val-5, val-6, val-7
に相当しますcsvを個々のディスクリプタに分割します。あなたはあなたが望むものを手に入れるだけです。例えば
SELECT * FROM link_externals_to_descriptors WHERE external_ref = 99;
クエリを駆動するために使用されると、カウント(行数)のカーソルが外部IDの記述子の数になります。そのようなものとして、以下の数および記述子(ログに情報を出力する)を取得するために使用することができる
: -
Cursor csr = db.query("link_externals_to_descriptors",
null,
"external_ref=?",
new String[]{"99"},
null,null,null);
int my_count_of_descriptors = csr.getCount()
Log.d("MYINFO","The number of Descriptors for EXTID 99 is" +
Integer.toString(my_count_of_descriptors) +
" They are:-");
while(csr.moveToNext) {
Log.d("MYINFO","\t" + csr.getString(csr.getColumnIndex("descriptor_ref")));
}
csr.close();
eaiserをお手伝いしてください。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Yunnosch