从数据库中获取数据并填充分区列表

Fetching data from DB and populate a partitioned List

无论从前端的角度还是从 SQLite 数据库查询数据,我都对此感到困惑。如果您知道如何解决其中任何一个问题,请回答。

SQLite 数据库

我有一个 table 喜欢这个:

transactionId | productId | quantity
      1             2           1     
      2             4           0 
      3             1          null             
      4             3           1
      5             9           1             
      6             6           0
      7             1           1
      8             7           1
      9             8           1
     10             2           1
     11             0          null
     12             3           1
     13             5           1
     14             7           1
     15             1           0
     16             2           1
     17             9           1
     18             0          null
     19             2           1

现在我想在我的 flutter 应用程序的列表中以 5 个单元为一组(即,直到完成 5 个单元的组)显示此数据。

所以第 1 组将有 8 个项目,

第二个将有 6 个项目,

第 3 组将有 5 个项目 (并且仍然不完整,因为可以添加更多项目直到该组的数量变为 5)

像这样:

现在我的应用程序可以有多个这样的组。另外,我不认为网格视图生成器可以在这里工作,因为对于每个组我都必须显示该组的一些数据以及累积数据(图中未显示)

问题:

1) 如何从SQFLite数据库中查询数据?

2) 如何在我的Flutter App前端显示查询到的数据?

不幸的是,这类问题需要递归 CTE(或其他迭代处理)。

假设transactionId是连续的,没有间隙:

with recursive cte as (
      select transactionId, productId,
             coalesce(quantity, 0) as quantity,
             1 as bin
      from t
      where transactionId = 1
      union all
      select t.transactionId, t.productId,
             (case when cte.quantity > 5
                   then 0 else cte.quantity
              end)  + coalesce(t.quantity, 0) as quantity,
             (case when cte.quantity > 5 then 1 else 0 end) + cte.bin as bin
      from cte join
           t
           on t.transactionId = cte.transactionId + 1
     )
select *
from cte;

如果 transactionId 有差距或其他问题,只需使用 row_number()(在另一个 CTE 中)为 where 子句创建适当的列。