0

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

SQLite 数据库

我有一张这样的桌子:

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

现在我想在我的颤振应用程序的列表中以 5 个单元为一组(即完成 5 个单元的组)显示这些数据。

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

第二个将有6个项目,

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

像这样的东西:

在此处输入图像描述

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

问题:

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

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

4

1 回答 1

1

不幸的是,这类问题需要递归 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子句创建适当的列。

于 2019-06-26T10:57:21.123 回答