Mysql codeigniter php asc desc order по результату подсчета с использованием php

У меня три таблицы:

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 и значение будут храниться в таблице at_category_taxonomy а идентификаторы этой категории имеют два магазина в таблице 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 магазинов, тогда вывод будет

 No.Of.Shops (ASC) (Desc) Category Name (ASC) (Desc) 1 Ice cream Shops 3 Electronic Shops 

Это также тиски для названия категории.

теперь я хочу отобразить результат, посчитав число магазинов по порядку desc, используя codeigniter.

Related of "Mysql codeigniter php asc desc order по результату подсчета с использованием php"

Не уверен, что это лучшая практика. Также может быть плохо, если у вас много данных в БД. Но я хотел бы предложить.

1.Введите идентификаторы категорий в один массив.

2. Таблицы Jooin для каждой категории. (Использование цикла 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 из массива );

3. $query – результат для каждой категории.

4. Количество магазинов для каждой категории может быть принято как,

 $numberOfShos = $query->num_rows(); 

выберите email, count (*), так как c FROM заказывает 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();