SQLite-根据表b中相关行的计算结果从表a中选择

SQLite-根据表b中相关行的计算结果从表a中选择,sql,database,sqlite,Sql,Database,Sqlite,我有两个表格,“主题”(表a)和“主题投票”(表b)。 表b中的每一行都有一个属性“投票”(布尔值) 我需要从主题中选择行,并通过topic_voces(投票=true)中所有相关行的总和减去topic_voces(投票=false)中所有相关行来排序 例如,对于“主题”中的一行,“主题投票”中总共有四行,其中3行的投票数=真,1行的投票数=假,在这种情况下,“总和”将为2(3-1) 如何在sqlite中实现这一点 您可以在子查询中找到每个主题的投票计数差异,然后将其与topics表连接,如下所

我有两个表格,“主题”(表a)和“主题投票”(表b)。 表b中的每一行都有一个属性“投票”(布尔值)

我需要从主题中选择行,并通过topic_voces(投票=true)中所有相关行的总和减去topic_voces(投票=false)中所有相关行来排序

例如,对于“主题”中的一行,“主题投票”中总共有四行,其中3行的投票数=真,1行的投票数=假,在这种情况下,“总和”将为2(3-1)


如何在sqlite中实现这一点

您可以在子查询中找到每个主题的投票计数差异,然后将其与topics表连接,如下所示:

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。请随意将其设置为您拥有的任何列名称。

请显示一些示例数据和预期输出。您的问题具体在哪里?您不知道如何在查询中关联这两个表吗?或者您不知道如何汇总行和计数吗?这可能是很好的显示您到目前为止的查询,并告诉我们您在哪里卡住了。写得好的查询。但是要注意空值;使此
计数(当…
或添加
else 0
@ThorstenKettner-更新时为案例)…谢谢。谢谢,这确实起到了作用!但是现在查询不包括没有主题投票权的主题。我如何也包括这些主题?