2011-09-13 20 views
6

Estoy desarrollando una aplicación de menú de restaurante en Android. Mi aplicación tiene una tabla de base de datos que tiene las siguientes columnas:¿Cómo seleccionar valores distintos de una columna en la tabla?

  • id (clave principal)
  • categoría nombre
  • elemento

La columna categoría muestra la categoría de elemento, como verduras, no verduras, bocadillos, etc. Tiene valores duplicados y quiero seleccionar solo valores distintos de esta columna. He intentado el siguiente pero no funciona si alguien puede proporcionar una solución:

String query = "SELECT DISTINCT category FROM todo"; 

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

return cursor; 
+0

¿Usted está consiguiendo los errores? – diagonalbatman

+0

no recibo ningún error de sqlite, pero la aplicación deja de ejecutarse, el debugador muestra el origen del error no encontrado. Curently no estoy usando ninguna aplicación de inicio de sesión – sagar

+0

Debe usar logcat para depurar su aplicación. Nos dará más información sobre su problema. –

Respuesta

6

Probar:

"SELECT DISTINCT category as _id, category FROM todo" 

Esto funcionó para mí en la misma situación.

+2

¿Podría explicarnos qué significa esto? ¿Por qué necesita reemplazar "FROM todo" con "como _id, categoría FROM todo"? – Greener

+2

¿cómo podría obtener 4 votos por votos? – preetam

11

Usted puede también utilizar esta consulta específica del método de la clase SQLiteDatabase que toma un valor booleano para determinar si desea valores distintos o no:

consulta de cursor pública (distinta, mesa booleano String, String [ ] columnas, de selección de cadena, String [] selectionArgs, cuerdas, cuerdas tienen GroupBy, cadena orderBy, límite de la cadena)

Link to Android Reference

de esta manera usted no tiene que utilizar rawQuery en absoluto.

1

Éste es cómo hacer distinto, también para obtener categorías

// 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; 
} 
Cuestiones relacionadas