【问题标题】: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
      

      对不起,如果我对您的表名的语法不完美,但这应该是您所需要的。如果您仍然遇到问题,请告诉我。如果它不起作用,这可能需要在子查询中,现在我可以修改它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 2018-03-09
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        • 2020-06-19
        • 2011-08-23
        相关资源
        最近更新 更多