【问题标题】:SQL count record by date group by product idSQL按日期组按产品ID计数记录
【发布时间】:2018-12-29 15:01:50
【问题描述】:

我正在使用 Codeigniter,当我 COUNT 总量 FROM wo_tbl_sales_items WHERE pdate GROUP BY pid 时遇到问题。查询没有给出更正的结果,我在下面显示我的代码,

$this->db->select("
        IFNULL(FORMAT(SUM(`si`.`item_total`),2), '0.00') as total_items_amount,
        IFNULL(COUNT(`si`.`item_qty`), 0) as total_items_count

    ");
    $this->db->where('si.pdate =', $date);
    $this->db->from('wo_tbl_sales_items si');
    $this->db->group_by('si.pid');
    $this->db->order_by('total_items_count', 'DESC');
    $result = $this->db->get();
    if($result->num_rows() > 0)
    {

        foreach($result->result() as $row){

           $data['parts'][] = array(
                'total_items_amount' => $row->total_items_amount,
                'total_items_count' => $row->total_items_count
            ); 
        }

    }

我还展示了我的数据库表结构,

----------------------------------------------------------------------------
| mainid |   pid  |   item_name   |  item_qty  | item_total  |    pdate    |
----------------------------------------------------------------------------
|   1    |   164  |   Iphone 6s   |     2      |   2000      |  2018-07-21 |
|   2    |   164  |   Iphone 6s   |     1      |   1000      |  2018-07-21 |
|   3    |   164  |   Iphone 6s   |     1      |   1000      |  2018-07-21 |
|   4    |   165  |   Samsung A6  |     1      |   600       |  2018-07-21 |
----------------------------------------------------------------------------

我的结果是这样的,请看下面的结构。

-------------------------------------------------
|  Items Name    |    Qty   |  Total Amount     |
-------------------------------------------------
|   Iphone 6s    |     4    |      4000         |
|   Samsung A6   |     1    |       600         |
-------------------------------------------------

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    根据你预期的输出,你需要sumitem_qty 不算item_qty

    $this->db->select("
            IFNULL(FORMAT(SUM(`si`.`item_total`),2), '0.00') as total_items_amount,
            IFNULL(SUM(`si`.`item_qty`), 0) as total_items_count
    
    ");
    

    普通的 sql 看起来像

    select si.pid,
    si.item_name,
    ifnull(sum(`si`.`item_qty`), 0) as total_items_count,
    ifnull(format(sum(`si`.`item_total`),2), '0.00') as total_items_amount
    from wo_tbl_sales_items si
    where si.pdate = '2018-07-21' 
    group by si.pid,si.item_name
    order by total_items_count DESC
    

    Demo

    尝试将格式化部分 (FORMAT(....)) 从查询移动到您的应用程序代码。

    【讨论】:

    • 同样的错误,item_qty 乘以一定数量,而不是记录不正确。
    • @MrTom 我已经使用sqlfiddle.com/#!9/70b390/6 测试了普通的 sql 并且没有问题看看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2017-04-30
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多