【发布时间】:2019-03-27 10:39:07
【问题描述】:
我已经为我的应用程序创建了一个内容提供程序。为了简单起见,我将举一个例子。我有一个表'OrderDetails'。
- 我有一个 OrderId 列。
- 我有一列用于在该 OrderId 中购买的不同产品类型的数量。
- 我有一个 OrderDetailId,它是表的主键。
我想编写查询:SELECT OrderID, sum(quantity) FROM OrderDetails GROUP BY OrderID 它将返回:
但是,我尝试在我的内容提供程序的 URI 中插入我的 GROUP BY 子句,但它不起作用,因此结果查询变为:SELECT OrderID, sum(quantity) FROM OrderDetails 返回此内容(所有内容的全部数量和最后一个 OrderId) :
这里是获取光标并简单打印出我刚刚制作的结果的方法:
private void findQuantityByOrder(){
Uri uri = DatabaseContract.CONTENT_URI_ORDER_DETAILS;
String[] selection = new String[] {DatabaseContract.DatabaseOrderDetails.ORDER_ID,
"sum("+ DatabaseContract.DatabaseOrderDetails.QUANTITY + ")"
+"GROUP BY(" + DatabaseContract.DatabaseOrderDetails.ORDER_ID + ")"};
String projection = null;
String sortBy = null;
String[] args = null;
Cursor cursor = getContentResolver().query(
uri,
selection,
projection,
args,
sortBy);
for (int i = 0; i < cursor.getCount(); i ++) {
cursor.moveToPosition(i);
int orderID = cursor.getInt(cursor.getColumnIndex("orderID"));
int quantity = cursor.getInt(cursor.getColumnIndex("sum(quantity)"));
System.out.println("orderId: " + orderID + ". Quanitity: " + quantity);
}
}
它只打印出所有订单的全部总和,以及桌子上的最后一个 ID。
我相信 GROUP BY 已被删除且不再受支持。有没有其他方法可以提供相同的结果?
谢谢
【问题讨论】:
-
如果输出名为 selection 的变量,你会看到什么?
标签: android sql group-by cursor android-contentprovider