2017-02-15 1 views
1

에 해당 행의 계산 결과에 기초하여, "주제"(표 A) 및 "topic_votes"(표 B). 표 b의 각 행에는 "vote"(부울) 속성이 있습니다.SQLite는 - 테이블에서 선택 나는 두 개의 테이블이 표 B

내가 주제에서 행을 선택하고 = 투표와 topic_votes에 관련된 모든 행으로 false 차감 투표와 topic_votes = 사실 모든 관련 행의 총합에 의해 그들을 주문해야합니다.

예를 들어, "topics"의 한 행에 대해 "topic_vote"에는 총 4 개의 행이 있고, 3 개는 vote = true이고 1은 vote = false입니다.이 경우 "sum_total"은 2 (3 - 1).

내가 어떻게 SQLite는이를 구현할 수있다?

+1

는 일부 샘플 데이터와 예상 출력을 보여주십시오. –

+0

정확히 어디에 문제가 있습니까? 쿼리에서 두 테이블을 관련시키는 방법을 모르십니까? 또는 행과 집계를 집계하는 방법을 모르십니까? 지금까지 얻은 쿼리를 보여주고 어디에 갇혀 있는지 알려주는 것이 좋습니다. –

답변

1

당신은 하위 쿼리에서 각 주제에 대한 투표 수의 차이를 발견하고이 같은 주제 테이블로 가입 할 수 있습니다 :

select t.* 
from topics t 
join (
    select topic_id, 
     sum(case when topic_vote = 'true' then 1 else 0 end) - 
     sum(case when topic_vote = 'false' then 1 else 0 end) diff 
    from topic_votes 
    group by topic_id 
) v on t.topic_id = v.topic_id 
order by v.diff desc, t.topic_id; 

나는 관계의 열이 topic_id되어 가정. 가지고있는 컬럼 이름으로 자유롭게 설정하십시오.

+0

잘 쓰여진 쿼리. 그러나 null을 인식하십시오. ...이'수 (케이스 만들기 '또는'다른 0' –

+0

@ThorstenKettner 추가 -..... 업데이트 덕분에 속임수를 썼는지 – GurV

+0

감사하지만 지금은 topic_votes을 해달라고 주제를 포함 나던 쿼리는 내가 어떻게 할 수!. 다음 주제도 포함 시키십시오. –

관련 문제