마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

DB 및 CursorAdapter 질문

0 추천

Activity 진입할 때 두개의 테이블(지불, 충전) 정보를 합쳐서 보여주고 싶습니다.

 

Activity 진입할 때 마다 DB의 갱신을 체크하여 지불 및 충전 내용을 업데이트하고

시간 날짜 내림차순으로 정렬하고 싶은데요.

 

지불 테이블, 충전테이블 의 컬럼은 동일하게 (_id, 시간, 날짜, 금액) 이구요.

합쳐서 보여줄 때는 충전인지 지불인지 구분할 수 있는 bool 타입의 컬럼이 하나 더 추가 되어야 합니다.

 

그래서 제가 View를 생성하여 두 테이블을 "UNION ALL" 하였더니..

문제가 CursorAdapter를 사용할 때 발생 하더라구요.

CursorAdapter에서는 _id값을 가지고 Adapter를 만드는데

 UNION ALL을 하다 보니 _id값이 유니크하지 않아서 Exception이 뜹니다.

 

그래서 View를 다 Collection에 옮겨 담고 이걸로 ArrayAdapter를 만들었더니 진입할때 시간이 너무 오래 소모됩니다..ㅠ

 

아래는 개략적인 테이블 구조입니다.

 

지불테이블

_id 날짜 시간 금액
1 10/10/10 1:1:1 1000
2 10/11/11 2:2:2 2000
3 10/12/12 3:3:3 3000

 

충전테이블

_id 날짜 시간 금액
1 11/11/11 4:4:4 4000
2 11/12/12 5:5:5 5000
3 11/10/10 6:6:6 6000
4 11/09/09 7:7:7 7000

 

 View(충전+지불테이블)

_id 날짜 시간 금액        충전
1 10/10/10 1:1:1 1000          0
1 11/11/11 4:4:4 4000          1
2 10/11/11 2:2:2 2000          0
2 11/12/12 5:5:5 5000          1
3 10/12/12 3:3:3 3000          0
3 11/10/10 6:6:6 6000          1
4 11/09/09 7:7:7 7000          1

 

질문 요약드립니다.

컬럼이 같은 두개의 테이블로 View를 만들 때 "_id auto increment" 와 같은 효과를 줄수 있는 컬럼을 생성 할 수 있나요??

만약 힘들다면 다른 방안이 있을까요?

 

appappapp (180 포인트) 님이 2013년 7월 11일 질문

1개의 답변

+1 추천
그냥 view 만들 넣는건 잘 모르겠고 select 할때 _id 컬럼을 빼고 select 하고

넘버링하시면 될 것 같은데요

 

이런식으로

select (select count(*) from View b where a.date <= b.date and a.time <= b.time) as _id, *
from View a
order by date desc, time desc
원조안드로이드 (58,190 포인트) 님이 2013년 7월 11일 답변
원조안드로이드님이 2013년 7월 11일 수정
...