2013-08-25 1 views
0

반복되는 질문이라면 실례합니다. 나는 여기와 구글에서 검색을 시도했지만 정확히 내가 원하는 것을 찾을 수 없었다.안드로이드 SQLite가 다른 테이블을 기반으로 한 테이블에서 레코드를 얻는 것

두 테이블 A & B.
표 A : ID, 이름, 설명, 등급.
표 B 필드 : id, id (테이블 A에 링크 됨), customerId가 권장됩니다.

표 A는 사용자가 제공 한 평균 누적 평점을 저장하는 데이터 항목을 포함합니다. 표 B는 표 A의 데이터에 대한 다른 속성을 저장합니다. 권장되는 비트를 저장합니다 (권장되지 않는 경우 권장 된 &에 대해 1).

표 A의 모든 데이터를 나열하려고하지만 표 B의 권장 비트를 사용하여 정렬하려고합니다. 표 A에 10 개의 레코드가 있고 표 B에 2 개의 레코드가있는 경우 10 개의 레코드 , 표 B의 2 개가 먼저 와야하고 나머지는 표 A에서 가져와야합니다. 권장되는 비트 값이 0인지 1인지는 중요하지 않습니다. 표 A의 다른 8 개 레코드를 나열하는 동안 레코드 등급에 따라 내림차순으로 정렬됩니다.

사람이 안드로이드 애플 리케이션을 위해이 sqlite 쿼리를 작성 가이드 수 있습니까? 미리 감사드립니다!

답변

2

왼쪽 조인은 결과 집합에 recommended 필드를 추가합니다 (일치하는 B 레코드가없는 경우 값은 NULL입니다). 표현 recommended IS NULL 또는 EXISTS(...) 반환 0 또는 1 : 또는

SELECT DISTINCT A.* 
FROM A LEFT JOIN B ON A.id = B.aId 
ORDER BY B.recommended IS NULL, 
     A.rating DESC 

: 빠른 답변

SELECT * 
FROM A 
ORDER BY NOT EXISTS (SELECT 1 
        FROM B 
        WHERE B.aId = A.id), 
     rating DESC 
+0

감사합니다. 그러나 완전히 작동하지는 않습니다. 그것은 내가 테이블 A에서 중복 레코드를 제공하고 테이블 A의 필드 ID도 모든 레코드에서 올바르지 않습니다. 중복 기록을 삭제할 수있는 방법이 있습니까? 감사합니다. –

+0

감사합니다. 두 번째 쿼리가 저에게 효과적이었습니다. –

관련 문제