Codeigniter检索列

时间:2016-02-01 04:42:28

标签: php mysql codeigniter

我目前正在使用codeigniter 3来构建网站。我已经能够使用数据库和活动记录构建完整的图库和购物车系统。以及后端。我目前正在使用charts.js在网站上的5个顶级卖家的后端建立一个饼图。我还将使用折线图为按小时销售的商品制作图表。我可以使用虚拟数据显示图表没有问题,但是我遇到了尝试从数据库中检索正确数据的问题。看起来查询会非常复杂。

我的mysql表名为order_items。在订单商品中,有一列qty和一列product_type。两者都返回整数。我需要的是找出哪五个产品销量最大。最终我需要将数据添加到我的charts.js设置中,如下所示。任何具有codeigniter活动记录的高级经验的人?

var pieData = [{
    value : 300,
    color : "#F7464A",
    highlight : "#FF5A5E",
    label : "Product 1"
}, {
    value : 125,
    color : "#46BFBD",
    highlight : "#5AD3D1",
    label : "Product 2"
}, {
    value : 100,
    color : "#FDB45C",
    highlight : "#FFC870",
    label : "Product 3"
}, {
    value : 40,
    color : "#949FB1",
    highlight : "#A8B3C5",
    label : "Product 4"
}, {
    value : 20,
    color : "#4D5360",
    highlight : "#616774",
    label : "Product 5"
}];

4 个答案:

答案 0 :(得分:1)

我认为你应该尝试这个脚本,

$data = $this->db->select('*')
                 ->from('order_items,SUM(qty) as total_qty')
                 ->order_by('total_qty','desc')
                 ->limit(5)
                 ->group_by('product_id')
                 ->get()->result_array();

答案 1 :(得分:0)

我找到了自己的解决方案,使用PHP以防其他人偶然发现这个问题。如果有更好的方法使用mysql做到这一点我会很高兴学到一些东西。这是我的php函数获取我需要的结果。

$select = array('products.name as label', 'sum(order_items.qty) as value');
$final = $this -> db -> select($select)
               -> from('products') 
               -> join('order_items', 'order_items.product_id = products.id', 'left') 
               -> group_by('products.id') 
               -> order_by('value', 'DESC') 
               -> limit(5) 
               -> get() -> result_array();

在过去的几个小时里,我做了一些mysql教程,并学到了很多关于加入,订购和限制的知识。以下是我最终用来获得我需要的东西。

1.  Assign equal width from button1 to button2.
2.  Assign equal height from button1 to button2.
3.  Assign horizontal spacing between both buttons.
4.  Assign leading space from button1 to its superview.
5.  Assign trailing space from button2 to its superview.
6.  Assign horizontal centre in container (means Align Centre X to : SuperView).

答案 2 :(得分:0)

尝试一下

$data = $this->db->select('id, product_id, SUM(quantity) as total_qty')
                 ->from('table')
                 ->order_by('total_qty','desc')
                 ->limit(5)
                 ->group_by('product_id')
                 ->get()->result_array();

答案 3 :(得分:0)

public function getAllBestsaller() {  

    $result = array();
    $returndata = array();
    $this->db->select("*, SUM(total_sale) as total_sale");
    $this->db->from("{$this->tblproducts}");

    $this->db->where('isactive', 1 );
    $this->db->order_by('total_sale','desc');
    $this->db->limit(2);
    $this->db->group_by('product_id');
    $aQuery = $this->db->get();
    $this->db->last_query();
    if($aQuery -> num_rows() >0 ){
        $returndata = $aQuery->result();
    }
    return $returndata;
}