2016-09-14 19 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付款总额。