我有两个表名为List
和Task
。SQLite:基于2个不同的ID值从一个表获取数据到第二个表中
- 列表表由两列组成:由
ListID
和NAME
- 任务表由:
TaskId
,TaskListId
,Name
,Notes
,Completed
和Hidden
有其产生3列表ID名为Personal
,Business
和History
的3个标签使用TabManager
我需要的是如果我从个人或企业中删除任务,然后通过设置Hidden = 1隐藏它。然后我想在我的历史记录标签中显示。如何实现这一点。 如何在SQLite中编写查询。我需要一个查询类似下面
Select * from Task where (TaskListID=1 or 2 // this is the part giving me problem as TaskListId decides which task belongs to which tab like 1=personal,2=business) AND hidden==1;
以下是()用于为当前标签显示数据的方法refreshTaskList。
public void refreshTaskList() {
// get task list for current tab from database
Context context = getActivity().getApplicationContext();
TaskListDB db = new TaskListDB(context);
//ArrayList<Task> tasks=new ArrayList<Task>();
if(Objects.equals(currentTabTag, "History"))
{
ArrayList<Task> tasks=db.getHistory(currentTabTag);
TaskListAdapter adapter = new TaskListAdapter(context, tasks);
taskListView.setAdapter(adapter);
}else
{
ArrayList<Task>tasks2=db.getTasks(currentTabTag);
TaskListAdapter adapter = new TaskListAdapter(context, tasks2);
taskListView.setAdapter(adapter);
}
此外,还有以下getTasks和getHistory方法用于从当前Tab的数据库中提取任务。
public ArrayList<Task> getTasks(String listName) {
String where =
TASK_LIST_ID + "= ? AND " +
TASK_HIDDEN + "!='1'";
long listID = getList(listName).getId();
String[] whereArgs = {Long.toString(listID)};
this.openReadableDB();
Cursor cursor = db.query(TASK_TABLE, null,
where, whereArgs,
null, null, null);
ArrayList<Task> tasks = new ArrayList<Task>();
while (cursor.moveToNext()) {
tasks.add(getTaskFromCursor(cursor));
}
if (cursor != null)
cursor.close();
this.closeDB();
return tasks;
}
public ArrayList<Task> getHistory(String listName)
{
String where =
TASK_LIST_ID + "= ? AND " +
TASK_HIDDEN + "=='1'";
long listID = getList(listName).getId();
String[] whereArgs = {Long.toString(listID)};
this.openReadableDB();
Cursor cursor = db.query(TASK_TABLE, null,
where, whereArgs,
null, null, null);
Log.v(TAG,"Value of cursor is-" +cursor);
ArrayList<Task> tasks = new ArrayList<Task>();
while (cursor.moveToNext()) {
tasks.add(getTaskFromCursor(cursor));
}
if (cursor != null)
cursor.close();
this.closeDB();
return tasks;
}
我觉得是,TASK_LIST_ID作为其决定哪些任务属于在DB的选项卡的外键。所以我需要的是一个这样的查询,我可以从两个选项卡(即Personal和Business)获取任务,如果它们的隐藏值设置为1,则将它们放入历史记录中。
'...其中(TaskListID = 1或TaskListID = 2)...' –