2016-10-04 3 views
-2

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 und NAME
  • Task-Tabelle besteht aus: TaskId, TaskListId, Name, Notes, Completed und Hidden

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.

+0

'... wo (TaskListID = 1 oder TaskListID = 2) ...' –

Antwort

1

Wenn der 1 oder 2 Teil Sie harte Zeit schenkt, dann hier gehen Sie:

SELECT * FROM task WHERE TaskListID=1 OR TaskListID=2 AND HIDDEN=1

+0

wie um das in db.query() -Methode zu verwenden ..? bedeutet, wie man where und whereargs etc .. – saurabh169

+0

@saurabhsarpotdar Verwenden Sie 'rawQuery()' –

+1

'WHERE (TaskListID = 1 oder TaskListID = 2) UND HIDDEN = 1' – mihail

Verwandte Themen