У меня три таблицы:
at_category:
at_category_taxonomy:
at_shop:
Я хочу присоединиться к этим трем таблицам, посчитав результат.
Например, категорию, названную как электронные магазины в таблице 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.
Не уверен, что это лучшая практика. Также может быть плохо, если у вас много данных в БД. Но я хотел бы предложить.
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();