簡體   English   中英

使用SQLite查詢將唯一的值放入“歷史應用”的ListView中

[英]Using SQLite Query to put only unique values into ListView for a “history app”

老實說,我不知道如何正確地命名這個問題。

我有一個與這些列的SQLite數據庫。

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);

我最初有一個帶有XML的ListView,該XML包含每一列的textview。 這只是將每一列從數據庫中拉出1:1。 使用適配器很容易。 我正在嘗試使用ViewBinder檢測每個輸入項目的平均價格(如果存在重復的實例,例如,不同的日期),並顯示該項目的價格。

本質上,我希望ListView僅顯示每個項目一次(平均價格),並且當您選擇它時,您可以查看每個存儲的實例(如歷史記錄)。

從我所在的位置進行此操作最簡單的方法是什么? 假設可以在上面使用ViewBinder方法(或查詢),如何提取ITEM and AVG(PRICE)放入適當的視圖一次,以實現“歷史記錄”功能?

將以下內容添加到數據庫的創建字符串中:

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

這樣,您將在其中擁有想要唯一的任何列名,不允許重復,並且如果兩次輸入數據庫將被替換。 我假設您擁有的一列可以是唯一的。 例如,像item_id一樣,那么一次只能添加該項目中的一個,它將顯示最新的ON CONFLICT REPLACE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM