【发布时间】:2014-05-30 07:07:33
【问题描述】:
我正在尝试构建一个测验应用程序,数据库中的条目如下所示
id | term | synonym 1 | synonym 1 answered | synonym 2 | synonym 2 answered | ....
----------------------------------------------------------------------------------
1 | read | recite | Yes | study | No |
2 | work | effort | No | labour | Yes |
我们的想法是一次呈现一个同义词。选择下一个同义词后,使用同义词旁边的列将前一个同义词标记为已回答
对于选择单词的逻辑,我使用 Collection.shuffle() 函数来获取随机行和随机列,查询数据库以查看其回答的列是否为“否”。如果“是”,我会重复洗牌,直到得到“否”。
为了知道整个表中的至少一个条目在任何“已回答”列中是否有“否”,我对已回答的列使用 OR 子句(以确保所有同义词都没有得到回答)
所以我的应用程序正在做很多迭代来获得所需的单词,这绝对是非常糟糕的方式。
我无法想办法让 sqlite 查询返回一个包含“否”字样的随机行和列。如果我能得到结果为“否”的列名,我可以去掉“已回答”这个词并连续获取相关的同义词列,并在没有大量 java 代码的情况下呈现它。
任何人都可以启发我并给出解决方案吗?我需要列名和整个表中单词“No”的结果匹配的rowid。它必须是随机的
编辑: 这里给出的场景是为了简单起见。实际的应用程序处理梵文语法,需要我计划的那种实现。我需要获取列的“名称”和获得“否”的行的“id”。在实现中,我不会使用“是”和“否”。所有术语的列数都是固定的。为简单起见,我举了这个例子。
【问题讨论】:
标签: android sqlite android-cursor