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

标签 sql sqlite flutter dart sqflite

无论从前端的角度还是从 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 个单元)显示此数据。

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

第二个将有 6 个项目,

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

像这样:

enter image description here

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

问题:

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 创建适当的列条款。

关于sql - 从数据库中获取数据并填充分区列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56769270/

相关文章:

sql - PostgreSQL遇到序列化失败的条件是什么?

sql - 另一个表中存在的记录的计算比率

c# - 如何使用 Where 语句执行 UpdateAsync

Flutter 通知计数然后在读取时隐藏徽章并在推送新通知时显示

MySQL 连接表并计算 where 子句中的行数

mysql - 如何处理维基百科转储中的重定向?

sqlite - 有没有办法使用增量更新 SQLITE 数据库?

dart - 在 Dart 中上传时如何压缩/减小图像大小?

android-studio - 尝试运行 flutter 应用程序并失败说构建失败并出现异常

mysql - Microsoft SQL 到 MySQL 触发器