【问题标题】:Mysql codeigniter php asc desc order by count result using phpMysql codeigniter php asc desc order by count result using php
【发布时间】:2014-02-07 19:28:34
【问题描述】:

我有三个表名为:

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 

当我在商店数量列中单击 asc order 时,输出将是

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

     1                          Ice cream Shops   
     3                          Electronic Shops

这也是类别名称的反义词。

现在我想通过使用 codeigniter 按 desc 顺序计算商店数量来显示结果。

【问题讨论】:

  • 你能举一些清楚的例子吗?我的意思是在 3 个表格中显示一些数据。所以我们可以理解并帮助您。
  • 在您的桌子“at_shop”上,“shop_category”实际上是“shop_category_name”或“shop_category_id”?
  • @kumar_v 请查看已编辑的段落并告诉我

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

不确定这是否是最佳做法。如果数据库中有大量数据,也可能不好。但我想建议。

1.将类别ID放入一个数组中。

2.为每个类别加入如下表。 (对数组使用 foreach 循环)

$this->db->select('*');    
$this->db->from('at_category');
$this->db->join('at_category_taxonomy', 'at_category.cat_id = at_category_taxonomy.cat_id');
$this->db->join('at_shop', 'at_category.cat_id = at_shop.shop_category');
$this->db->where('at_category', 1);
$query = $this->db->get();

在上面的代码中,$this->db->where('at_category', get ID from array);

3.$query 是每个类别的结果。

4.每个品类的店铺数量可以作为,

$numberOfShos = $query->num_rows();

【讨论】:

    【解决方案2】:

    select email, count(*) as c FROM orders GROUP BY email

    $this->db->select('COUNT(sh.shop_category) as No_of_shops,cat.name as category_name',FALSE);
    $this->db->from('at_shop sh');
    $this->db->join('at_category cat', 'cat.cat_id = sh.shop_category');
    $this->db->order_by('sh.shop_category');
    $query = $this->db->get();
    retuen $query->result_array();
    

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2011-02-22
      • 1970-01-01
      相关资源
      最近更新 更多