我也在此处发布另一个问题的答案(请参阅https://github.com/Kotlin/anko/issues/622)。我试图在 Anko SQLite 中进行查询,该查询在同一张表上使用了两次内连接(例如,SELECT ... FuelData AS FuelData1 INNER JOIN FuelData AS FuelData2 ON FuelData1.Id = FuelData2.Id)。
我添加了一个数据类:
class FuelData2(
val id : Int,
val currentDate: String,
val litersPer100Km: Double
)
并将逻辑添加到我的活动类中:
private fun readFuelData2(): ArrayList<FuelData2> {
val resultList = ArrayList<FuelData2>()
val query = "SELECT FuelData1.Id, FuelData2.CurrentDate," +
" (FuelData2.Fueled / (FuelData2.Mileage - FuelData1.Mileage) * 100) AS LitersPer100Km" +
" FROM FuelData AS FuelData1" +
" INNER JOIN FuelData AS FuelData2" +
" ON FuelData1.Id = (FuelData2.Id - 1);"
database.use {
val cursor = database.writableDatabase.rawQuery(query, null)
while (cursor.moveToNext()) {
val fuelData = FuelData2(id = cursor.getInt(0),currentDate = cursor.getString(1),
litersPer100Km = cursor.getDouble(2))
resultList.add(fuelData)
}
}
return resultList
}
我想做的查询是:
SELECT FuelData1.Id, FuelData2.CurrentDate,
(FuelData2.Fueled / (FuelData2.Mileage - FuelData1.Mileage) * 100) AS LitersPer100Km
FROM FuelData AS FuelData1
INNER JOIN FuelData AS FuelData2
ON FuelData1.Id = (FuelData2.Id - 1);
我为 Anko 创建了另一个问题,以便在文档中添加一个示例,因为它确实令人困惑:https ://github.com/Kotlin/anko/issues/623