Android SQLite从一个表中获取基于另一个表的记录

时间:2013-08-25 07:59:10

标签: android sql sqlite

如果是一个重复的问题,请原谅。我试着在这里和谷歌搜索,但我无法找到我想要的东西。

我有两张桌子A& B.
表A字段:id,名称,描述,评级 表B字段:id,aId(链接到表A),customerId,推荐。

表A包含我的数据项,我存储了用户提供的平均累积评分。 表B存储表A数据的另一个属性。它存储推荐位(推荐值为1,非推荐值为0)。

我想列出表A中的所有数据,但我想使用表B中的推荐位对它们进行排序。因此,如果表A中有10条记录,表B中有2条记录,则列出所有这10条记录,表B中的两个应首先出现,然后是表A中的其他两个。建议的比特值是0还是1并不重要。在列出表A中的其他8个记录时,我想列出基于评级的降序记录。

有人可以指导我为Android应用编写这个sqlite查询吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

左连接会将recommended字段添加到结果集中(如果没有匹配的NULL记录,则值为B)。 表达式recommended IS NULLEXISTS(...)返回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