我的SQLite数据库中有两个表,一个是所有内容的表(main
),另一个是“收藏夹”表(favorites
),我想加载一个Cursor
对于我的ListView
,如果它在favorites
中,则会显示为灰色或黄色。两个表都具有完全相同的列,我希望加载带有这些列的Cursor
和一个可以是布尔值或1或0的附加列favorite
。最喜欢的行只是从main
表,所以它的内容是一样的。然后,当点击星标时,更新favorites
表并在我的适配器上调用notifyDataSetChanged()
,这应该更新ListView
。
我尝试使用JOIN
并使用AS
别名加载表但我遇到了麻烦。任何人都可以帮助我使用SQLite查询来实现这一目标吗?谢谢!
答案 0 :(得分:0)
你可以使用像这样的选择
SELECT M.FieldA, M.FieldB,... M.Fieldx,
FROM MainTable AS M JOIN Favorites as F
ON M.Id = F.Id;
在此示例中,Id是匹配字段。另外,你可以用isnull(M.Fieldx,'something')或任何其他函数替换M.FiledX。但是,基本上如果M.Fieldx返回null,那么它不在收藏夹中。
另外值得一提的是,在收藏夹表中,您不需要复制该行,只需在主表中保存记录的ID即可。
答案 1 :(得分:0)
使用LEFT JOIN
我已经能够达到我想要的效果,并在is_fav
表格中添加了一列favorites
。
SELECT M.*, F.is_fav
FROM main AS M
LEFT JOIN favorites AS F ON M.title = F.title
添加该列可能看起来很奇怪,但在其他地方使用它。