从表中选择计数与另一个表的总和

时间:2019-07-10 18:03:13

标签: java mysql database hibernate spring-data

我有两个表订单表,而order_item表订单项有一个名为order_id的外键订单表

我想选择状态为已取消且总和的order_item.cbs> 0的计数顺序

    order table                      order_item table

************************* ************************************** * id * date * status * * id * status * cbc * cbs * order_id * ************************* ************************************** * 1 * null * CANCELLED * * 11 * * 1 * 0 * 1 * ************************* ************************************** * 2 * null * DELIVERED * * 12 * * 0 * 0 * 1 * ************************* **************************************

2 个答案:

答案 0 :(得分:0)

如果您使用的是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查询。

答案 1 :(得分:0)

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

很抱歉,如果我对您的表名的语法不够完美,但这应该是您所需要的。让我知道您是否仍然遇到麻烦。如果现在无法正常工作,则可能需要在子查询中。