2016-09-14 20 views
-1

我有這樣的列一個表中的記錄:如何選擇不重複的只是一個場SQLite的Android的

+--------+----+--------+---------------+------- +-------+---------+ 
| DATE | ID | Name | Cattle Type | Liter | Shift | Payment | 
+--------+----+--------+---------------+------- +-------+---------+ 

和數據是這樣的

9-9-2016 | 01 | Abhi | Cow | 2 | AM | 50 | 
9-9-2016 | 02 | Ram | Buff | 1 | AM | 25 | 
9-9-2016 | 01 | Abhi | Buff | 2 | PM | 50 | 
9-9-2016 | 01 | Abhi | Cow | 2 | PM | 50 | 

我通過獲取的所有數據通過在數據庫功能 例如日期: -

databaseObject.getAlldata(String From_date, StringTo_date) 

後,我得到的人l來自我的數據庫的值,我將它存儲到列表中。

我需要有沒有任何重複的id。其實我需要他們的id和牛類型,升,支付什麼是最好的Sqlite命令來做到這一點?

我期望的結果是這樣的:

ID : 1 
Cow = 4.00 Litre Rs 100 
Buff = 2.00 Litre Rs 50 
Total = Rs 150 

ID : 2 
Cow = 0.00 Litre Rs 0.0 
Buff = 1.00 Litre Rs 25 
Total = Rs 25 

我的代碼是:

list1 = db.getAllMilkCollection(start, end); 

try { 
    for(i = 0; i < list1.size(); i++) { 
     CattleTypeCowTotal = 0; 
     CattleTypeBuffTotal = 0 ; 
     String id = list1.get(i).member_code; 

     list2 = db.getAllDataOfPaymentRegister(start,end,id); 

     for(j = 0; j < list2.size(); j++) { 
      String member_name = list2.get(j).member_name; 
      String Cattle_type = list2.get(j).cattle_type; 

      if(Cattle_type.equalsIgnoreCase("Cow")){ 
       String amount = list2.get(j).amount.trim(); 
       if(amount!=null){ 
        CattleTypeCowTotal += Float.parseFloat(amount); 
       } 
      } 

      if(Cattle_type.equalsIgnoreCase("buff")){ 
       String amount = list2.get(j).amount.trim(); 
       if(amount != null){ 
        CattleTypeBuffTotal += Float.parseFloat(amount); 
       } 
      } 
     } 
     System.out.println("xxxxxxxxxxxxxxxxxxxx"); 
    } 

} catch (Exception e) { 
    Log.e("Error", ""+e); 
}      

感謝提前:) :)

+1

使用'GROUP BY'。 –

+1

我想你想顯示按照** ID **分類的數據,顯示每個牛的_Quantity(在你的情況下爲Liter)_和_sum Payment_的總和。如果我理解錯了,請糾正我。 –

+0

yea @Monish Kamble是的,我想要那樣的東西..謝謝 –

回答

-1

SQLite的DISTINCT關鍵字一起使用, SELECT語句消除所有重複記錄並僅提取唯一記錄。

在表中有多個重複記錄時可能會出現這種情況。在獲取這些記錄時,更有意義的是僅提取唯一記錄而不是提取重複記錄。

有關詳細信息檢查link

-1
Cursor cursor = db.query(true, YOUR_TABLE_NAME, new String[] { COLUMN_NAME_1 ,COLUMN_NAME_2, COLUMN_NAME_3 }, null, null, COLUMN_NAME_2, null, null, null); 

COLUMN_NAME_2是在其上的數據必須是不同的列。

0

你可以這樣做以下:

Select ID, Name, Cattle_TYPE, SUM(Liter) as Quantity, SUM(payment) as Total from Table_name where date > from_date and date < to_date group by ID,Name,Cattle_TYPE

這會給你正確的格式,你想要的所有記錄。只需添加,列出並做你想做的無聊。

+0

其給出的錯誤 無法從光標窗口讀取第0行第1列 –

+1

'where date> from_date和date

+0

@Abhishek:你用Java-SQLite驅動程序發射這個查詢嗎? 如下, stmt = c.createStatement(); ResultSet rs = stmt.executeQuery(高於SQL字符串); – Jack

0

考慮到你想要顯示歸類爲每個顯示每個牛

使用下面的查詢數量(升你的情況),並支付一筆款項的ID數據來獲取數據給每個牛數量和付款的總和的總和由ID

select ID, Cattle_type, sum(Liter) as Quantity, sum(Payment) as Total from ABC 
where Date between "2016-09-09" and "2016-09-10" 
group by Cattle_type, ID; 

2.分類創建一個模型類,並存儲上述查詢到它的結果。

3.將模型類的對象添加到ArrayList中。

我想從這裏你能設法顯示由ID分類的數據,並得到各ID付款總額。