2016-09-14 3 views
-1

을에 중복없이 레코드를 선택하는 방법 :나는이 같은 열이있는 테이블이 하나 개의 필드 SQLite는 안드로이드

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

을 그리고 데이터 I에 의해 모든 데이터를 가져 오는하고이

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) 

을 그 후 나는 알 수 내 데이터베이스에서 값을 내가 목록에 저장합니다.

중복이없는 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

각 소에 대해 _Quantity (귀하의 경우 Liter) _ 및 _sum of _를 표시하는 ** ID **에 따라 분류 된 데이터를 표시하고 싶습니다. 내가 잘못 이해하면 나를 바로 잡으십시오. –

+0

yea @Monish Kamble 그래, 그걸 좋아해. .. thanks –

답변

-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

'date> from_date and date

+0

@Abhishek : Java-SQLite 드라이버로이 쿼리를 실행 하시겠습니까? 아래와 같이, stmt = c.createStatement(); ResultSet rs = stmt.executeQuery (SQL 문자열 이상); – Jack

0

당신이 데이터를주고받을 각 가축

1.를 사용하여 아래의 쿼리를 수량 (귀하의 경우 리터) 및 지불 금액의 합계를 표시하는 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에 대한 총 지불을 얻기 위해 관리 할 수 ​​있다고 생각합니다.

관련 문제