2011-09-13 176 views
6

我正在開發Android中的餐廳菜單應用程序。我的應用程序具有其具有以下列一個數據庫表中:如何從表中的一列中選擇不同的值?

  • ID(主鍵)
  • 類別
  • 項名稱

類別列顯示項的類別,例如蔬菜,非蔬菜,零食等。它有重複的值,我想只選擇不同的值從這個列。我曾嘗試以下,但它不工作,如果任何人都可以提供一個解決方案:

String query = "SELECT DISTINCT category FROM todo"; 

Cursor cursor = database.rawQuery(query,null); 
if (cursor != null) { 
    cursor.moveToFirst(); 
} 

return cursor; 
+0

您是否收到任何錯誤? – diagonalbatman

+0

我沒有收到任何sqlite錯誤,但應用程序停止運行,debuger顯示未找到錯誤源。確實,我沒有在應用程序中使用任何日誌記錄 – sagar

+0

您應該使用logcat來調試您的應用程序。它會給我們更多關於你的問題的信息。 –

回答

6

嘗試:

"SELECT DISTINCT category as _id, category FROM todo" 

這在相同的情況下爲我工作。

+2

你能解釋一下這是什麼意思嗎?爲什麼你需要用「as _id,category FROM todo」替換「FROM todo」? – Greener

+2

他怎麼能得到4票? – preetam

11

您還可以使用SQLiteDatabase類,需要一個布爾值,以確定是否需要不同的值或不是此特定查詢方法:

公共光標查詢(布爾不同,字符串表,字符串[ ]列,選擇字符串,字符串[] selectionArgs兩個,字符串GROUPBY,有字符串,字符串的OrderBy,字符串限制)

Link to Android Reference

這樣,您就不必使用rawQuery可言。

1

這是如何使不同的,也得到類別

// Get Categories 
public Cursor getCategories() { 

    Cursor c = db.rawQuery("SELECT DISTINCT " + KEY_ITEM_CAT + " as " + KEY_ITEM_ID 
      + ", " + KEY_ITEM_CAT + " FROM " + ITEMS_TABLE_NAME, null); 

    if (c != null) { 
     c.moveToFirst(); 
    } 

    return c; 
} 
相關問題