php - Codeigniter + Mysql Active Record 查询 ASC DESC 顺序

标签 php mysql codeigniter

我有三个表,名称为:

at_category:

  1. cat_id
  2. 姓名

at_category_taxonomy:

  1. cat_taxonomy_id
  2. cat_id
  3. 分类

at_shop:

  1. shop_id
  2. shop_category

我想通过计算结果来连接这三个表。

例如,at_category 表中名为 Electronic Shops 的类别,其值将存储在 at_category_taxonomy 表中,并且该类别 ID 为at_shop 表中有两个商店。与其余类别相同aaa、bbb、ccc等......它可能有一个或两个商店,另外零个商店。

示例:

1. at_category

    ______________

    cat_id   name

     1       Electronic Shops
     2       Ice Cream Shops
    _______________

    2. at_category_taxonomy

    _______________________________________________

    cat_taxonomy_id   cat_id   taxonomy

      3                 1       Electronic Shops
      4                 2       Ice Cream Shops
    _______________________________________________

    3. at_shop

    ________________________________

    shop_id   shop_name   shop_category

     1            A         1 (ie.Electronic Shops) 
     2            B         1 (ie.Electronic Shops) 
     3            C         1 (ie.Electronic Shops) 
     4            D         2 (ie.Ice Cream Shops) 

    ________________________________

现在:类别电子商店有 3 家商店,冰淇淋店有 1 家商店

预期输出:

No.Of.Shops (ASC) (Desc)    Category Name   (ASC) (Desc)

     3                         Electronic Shops
     1                         Ice cream Shops 

当我在商店数量列中单击升序顺序时,输出将是

No.Of.Shops (ASC) (Desc)    Category Name   (ASC) (Desc)

     1                          Ice cream Shops   
     3                          Electronic Shops

这也是类别名称的反诗句。

现在我想通过使用 codeigniter 按降序排列的商店数量来显示结果。

最佳答案

在模型中编写如下所示的方法。

public function get_shops_by_category($order_by_column='shop_cnt',$order_by_method='DESC'){ 
    $this->db->select('c.name,COUNT(s.shop_id) as shop_cnt');
    $this->db->from('at_category AS c');
    $this->db->join('at_shop AS s','c.cat_id = s.shop_category','left');
    $this->db->group_by("c.cat_id"); 
    $this->db->order_by("{$order_by_column}", "{$order_by_method}"); 
    return $this->db->get()->result();
}

调用 Controller 中的模型方法。假设我的模型名称是 Shop_model。所以在 Controller 中我将编写:

$order_by_method = (!empty($this->input->get($order_by_method))) ? $order_by_method : 'DESC';
$order_by_column = (!empty($this->input->get($order_by_column))) ? $order_by_column : 'shop_cnt';

$result = $this->shop_model->get_shops_by_category($order_by_column,$order_by_method);

在clikc上,您需要在url中传递order_by_column值和order_by_method值

关于php - Codeigniter + Mysql Active Record 查询 ASC DESC 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328186/

相关文章:

mysql - 扩展Zend_Db_Table_Abstract创建联接时,会崩溃MySQL

php - CI中如何向数据库中插入一条记录

php - redirect() 在 URI 段前添加一个问号

javascript - 数据在 Highcharts 上的位置

php - 在 jquery/mysql 中保存 url 时出现问题

javascript - 如何在 php 的表格中实现爆炸功能?

php - MySQL 和 PHP 中的计时问题

php - 根据sql中的另一个表列值创建表列

php - 如何根据级别数计算结果是放在 TreeView 中的单词?

mysql - 在 mysql 中合并 2 列(已经尝试过联合)