Ich habe zwei Tabellen mit den Namen List
und Task
.SQLite: Abrufen von Daten aus einer Tabelle basierend auf 2 verschiedenen ID-Werten in der zweiten Tabelle
- Listen-Tabelle wird von zwei Säulen zusammen:
ListID
undNAME
- Task-Tabelle besteht aus:
TaskId
,TaskListId
,Name
,Notes
,Completed
undHidden
Es gibt 3 Listen-ID, die erstellt 3 tabs genannt Personal
, Business
und History
Verwendung TabManager
Was ich brauche, ist, wenn ich eine Aufgabe aus persönlichen oder geschäftlichen löschen dann wird es ausgeblendet von = 1 Einstellung Verborgen. Dann möchte ich das auf meinem Tab "Verlauf" anzeigen. Wie man das erreicht. Wie schreibe ich Abfrage in SQLite.? Ich brauche eine Abfrage so etwas wie unten
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;
Folgendes ist die Methode refreshTaskList() verwendet, um Daten für die aktuelle Registerkarte anzuzeigen.
Im Folgenden werden die Methoden getTasks und getHistory aufgeführt, die zum Abrufen von Aufgaben aus der Datenbank für die aktuelle Registerkarte verwendet werden.
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;
}
Was ich denke, ist, dass der TASK_LIST_ID wirkt als Fremdschlüssel, die in DB auf die Registerkarte, welche Aufgabe entscheiden gehört. Also, was ich brauche, ist eine solche Abfrage, wo ich die Aufgaben von beiden Registerkarten nämlich Personal und Business und legte sie in Geschichte bekommen können, wenn ihre verborgenen Wert auf 1 gesetzt ist.
'... wo (TaskListID = 1 oder TaskListID = 2) ...' –