【问题标题】:selecting count from table with sum of another table从表中选择计数与另一个表的总和
【发布时间】:2019-11-20 09:52:13
【问题描述】:
我有两个表 order 表和 order_item 表 order item 有一个外键到 order 表,称为 order_id
我想选择状态已取消且总和 order_item.cbs > 0 的计数订单
订单表 order_item 表
************************* **************************************
* id * date * status * * id * status * cbc * cbs * order_id *
************************* **************************************
* 1 * null * CANCELLED * * 11 * * 1 * 0 * 1 *
************************* **************************************
* 2 * null * DELIVERED * * 12 * * 0 * 0 * 1 *
************************* **************************************
【问题讨论】:
标签:
java
mysql
database
hibernate
spring-data
【解决方案1】:
如果您使用的是 JDBC,您可以这样做:
public int getOrderInfo(){
Statement stmt = null;
ResultSet results = null;
int queryResult = 0;
try(Connection connection = [your connection here]){
stmt = connection.createStatement();
results = stmt.executeQuery("SELECT COUNT('status') FROM order INNER JOIN order_item ON order.id = order_item.order_id WHERE order.status = 'CANCELLED';");
while(results.next()){
queryResult = results.getInt(1);
}
}catch(Exception e){
e.printStackTrace();
}
return queryResult;
}
因为它只是您提交的 SQL 查询。
【解决方案2】:
SELECT o.id, o.status, sum(oi.cbs)
FROM order o JOIN order_item oi ON o.id = oi.order_id
WHERE o.status = 'CANCELLED' AND oi.cbs > 0
GROUP BY o.id, o.status
对不起,如果我对您的表名的语法不完美,但这应该是您所需要的。如果您仍然遇到问题,请告诉我。如果它不起作用,这可能需要在子查询中,现在我可以修改它。