【发布时间】:2022-01-08 21:02:04
【问题描述】:
所以我有以下查询:
//returns min max value my odomoter field must have
@Query("SELECT MAX(odometer) FROM MaintenanceRecord WHERE vehicleId = :maintenanceVehicleId AND " +
"maintenanceTs < :dateAsLong")
Maybe<Float> getMinAllowedOdometer(long dateAsLong, int maintenanceVehicleId);
//returns the max value my odometer field is allowed to have
@Query("SELECT MIN(odometer) FROM MaintenanceRecord WHERE vehicleId = :maintenanceVehicleId AND " +
"CAST(strftime('%s',DATE(maintenanceTs/1000,'unixepoch')) AS integer) > " +
"CAST(strftime('%s',DATE(:dateAsLong/1000,'unixepoch')) AS integer)")
Maybe<Float> getMaxAllowedOdometer(long dateAsLong,int maintenanceVehicleId);
一个函数返回odometer 列必须具有的最小值,另一个查询返回odometer 列允许具有的最大值。
问题是 BOTH 函数是一个接一个地执行的,因为我需要订阅这两个函数。老实说,这是一种不好的做法。
我可以将这两个查询放在一个查询中并返回Maybe<Float, Float> 作为结果吗?
我的另一个解决方案是同步运行这些功能;而不是Maybe<Float>,,我会直接返回Float.
【问题讨论】:
标签: android sqlite android-sqlite android-room conditional-aggregation