在我的SQLite数据库中有两个表,一个是万物表(main),另一个是“收藏”表(favorites),我想为自己的ListView加载一个Cursor,如果它在favorites中,则会有一个恒星变灰或变黄。这两个表都有完全相同的列,我希望用这些列加载一个Cursor,并加载一个额外的列favorite,它可以是布尔值,也可以是1或0。最喜欢的行只是从main表中复制,因此其内容将是相同的。然后,当星号被点击时,更新favorites表并在我的适配器上调用notifyDataSetChanged(),这将更新ListView。
我尝试过使用JOIN并使用AS别名加载表,但我遇到了问题。有人能帮我完成SQLite查询吗?谢谢!
发布于 2014-02-24 22:25:40
使用LEFT JOIN,我能够实现我想要的结果,并在favorites表中添加了一个列is_fav。
SELECT M.*, F.is_fav
FROM main AS M
LEFT JOIN favorites AS F ON M.title = F.title添加该列似乎有些奇怪,但它在其他地方使用。
发布于 2014-02-21 17:38:38
您可以使用这样的选择
SELECT M.FieldA, M.FieldB,... M.Fieldx,
FROM MainTable AS M JOIN Favorites as F
ON M.Id = F.Id;在本例中,Id是匹配字段。此外,您还可以用isnull( M.FiledX,‘M.Fieldx’)或任何其他函数替换M.Fieldx。但是,本质上,如果M.Fieldx返回null,那么它就不在收藏夹中。
此外,值得指出的是,在收藏夹表中,您不需要重复行,只需将记录的ID保存在主表中即可。
https://stackoverflow.com/questions/21941162
复制相似问题