假设有一家餐厅,里面有以下桌子 -
@Entity(tablename = "pizza-sales")
data class Pizza(
val id,
val name,
val price,
val quantitySold,
val date,
) //Pizza sales of a day
@Entity(tablename = "burger-sales")
data class Burger(
val id,
val name,
val price,
val quantitySold,
val date,
) //Burger sales of a day
现在,我想要第三个表(总销售额),其中的行是根据上面的表格计算出来的
@Entity(tablename= "total-sales")
data class TotalSales(
val id,
val date,
val totalQuantity = Sum(Pizza[quantitySold]) + Sum(Burger[quantitySold]),
val totalPrice = Sum(Pizza[quantitySold * price]) + Sum(Burger[quantitySold * price])
) //Total sales of a day
请注意,我对 Pizza、Burger 进行了求和,其中 TotalSales.date = (Burger/Pizza).date。
另外,是否可以在查询中进行这样的算术运算-
@Dao
interface ToatalSalesDao {
@Query(
"ADD pizza-sales.quantitySold WHERE pizza-sales.date = :date"+
"ADD"+
"ADD burger-sales.quantitySold WHERE burger-sales.date = :date"
)
fun loadTotalSalesQuantityOfTheDay(date: String): Int
}
是的,但是 ADD 不是有效的 SQL,因此:-
也许可以考虑以下查询:-
为了演示,使用 SQLite 工具,考虑这个本机 SQLite(基于
@Entity
问题中的注释类):-
3 的输出
SELECT
为:-最后是总销售额表:-
也许要注意 SQL 中包含的注释
房间
根据您的代码(已更正并假定类型)将上述内容转换为 Room,因此
@Entity
带注释的类是:-@Dao
带注释的接口(名为 TheDAOs)具有以下功能:-并具有以下活动代码(请注意,为了演示的简洁,已经使用了主线程):-
日志的输出为:-
使用 App Inspection,总销售额表如下:-
注意!设计很可能会有改进,但这超出了问题/答案的范围