這將是可能的,但也許不是關係數據庫可用功能的完成/最佳利用。
這似乎是利用關係的忠告的情況。
如何考慮一個外部Id的表和一個描述符表,然後是一個鏈接表(關聯表或許多其他名稱用於連接關係的表)。
例如
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的和描述符之間的一對多,多對一之一,也是多對多關係對應。
即將是等同於
9 val-1, val-3, val-5, val-6, val-7
(除了VAL-6被他人使用)
將沒有需要合併或取消合併,將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