这将是可能的,但也许不是关系数据库可用功能的完成/最佳利用。
这似乎是利用关系的忠告的情况。
如何考虑一个外部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