从一个sqlite数据库中的多个表中获取数据,并按日期对它们进行排序

时间:2018-01-16 18:08:14

标签: android sqlite sorting cursor

我的Android应用程序中有一个SQLite数据库包含4个表。每个表都有一个用于保存日期的列。 其他栏目是“钱”,“描述”,“member_id”

现在我想按日期对这4个表中的所有数据进行排序,并在回收站视图中显示它们,但我不知道该怎么办?

可能使用某种光标或.....

你有任何想法解决这个问题吗? 抱歉没有代码写在这里

谢谢。

2 个答案:

答案 0 :(得分:0)

也许你可以在这里查看表格之间的联盟。它是关于MySQL的,但它对SQLite的工作方式完全相同。

How to merge 2 tables into one result in MySQL

它将为您提供如何从多个表格中选择列的示例,您可以使用此方法为recyclerview适配器生成游标。

答案 1 :(得分:0)

  

可能使用某种光标或.....

MergeCursor听起来很理想。但是,问题在于排序。

以下SQL,假设表名为 table1 table2 table3 table4 ,将合并4个表,按日期排序到游标中。

SELECT * FROM table1 UNION
    SELECT * FROM table2 UNION
        SELECT * FROM table3 UNION 
            SELECT * FROM table4
ORDER BY savedate ASC

如果列名不同按相同顺序,那么上面只需要ORDER BY ???? ASC被改变以便????根据第一个表格反映了相应的列。

所以如果你的表是

table1列:date1 money1 description member_id1 table2列:date2 money2 description member_id2 table3列:date3 money3 description id_member3 table4 columns:date4 money4 description4 member4_id

然后: -

SELECT * FROM table1 UNION
    SELECT * FROM table2 UNION
        SELECT * FROM table3 UNION 
            SELECT * FROM table4
ORDER BY date1 ASC

即。 date1是日期字段的结果列名。

你也可以使用: -

SELECT *, date1 AS savedate FROM table1 UNION 
    SELECT *, date2 AS savedate FROM table2 UNION 
        SELECT *, date3 AS savedate FROM table3 UNION 
            SELECT *, date4 AS savedate FROM table4 
ORDER BY savedate ASC

在这种情况下,savedate是光标中可用的附加列。