Использование SQLite Query для помещения только уникальных значений в ListView для "приложения истории"

Я, честно говоря, понятия не имел, как правильно назвать этот вопрос..

У меня есть БД s qlite с этими столбцами.

private final String createDb = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ( "
        + C_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
        + DATE + " text, "
        + SUBCAT + " text, "
        + ITEM + " text, "
        + PRICE + " integer, "
        + QUANTITY + " integer, "
        + WEIGHT + " integer, "
        + VOLUME + " integer, "
        + SALE + " text, "
        + STORE + " text, "
        + EXTRA + " text) ";

и пытался использовать ViewBinder вызвать запрос SQL, как показано ниже.

public String avgPrice() {
        ourHelper = new DbHelper(ourContext);
        db = ourHelper.getReadableDatabase(); 
        String sql = "SELECT AVG(PRICE) as avgprice, ITEM FROM " + TABLE_NAME + " GROUP BY " + ITEM;
        Cursor d = db.rawQuery(sql, null);

Первоначально у меня был ListView с XML, который содержит текстовое представление для каждого столбца. Это просто вытягивает каждую колонку 1:1 из БД. Это было легко с адаптером. Я пытаюсь использовать ViewBinder определить среднюю цену для каждого введенного товара (если есть повторяющиеся экземпляры, например, с другой датой) и показать ее для товара.

По сути, я хочу, чтобы ListView показывал только каждый элемент один раз (с ценой в среднем), и когда вы выбираете его, вы можете просматривать каждый сохраненный экземпляр (например, историю).

Какой самый простой способ сделать это, откуда я? Предполагая, что ViewBinder метод (или запрос) можно использовать выше, как извлечь ITEM and AVG(PRICE) поставить соответствующие взгляды только один раз, чтобы достичь моей функции "истории"?

1 ответ

Добавьте следующее в строку создания вашей базы данных:

+ "UNIQUE(" + COLUMN_NAME + ") ON CONFLICT REPLACE);";

Таким образом, вы получите уникальное имя столбца, дубликаты которого не будут разрешены и будут заменены, если они будут введены в базу данных дважды. Я предполагаю, что один из ваших столбцов может быть уникальным. Как, например, item_id, поэтому только один из этих элементов может быть добавлен за раз, он покажет самый последний с ON CONFLICT REPLACE,

Другие вопросы по тегам