interyes Опубликовано 26 ноября, 2015 Жалоба Поделиться Опубликовано 26 ноября, 2015 Задача определить самых постоянных покупателей, подсчет суммы заказов из статуса "выполнено"Кто нибудь задумывался об этом? Как это лучше организовать? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 26 ноября, 2015 Жалоба Поделиться Опубликовано 26 ноября, 2015 выбираете количество заказов со статусом 2, групируя их по user_id, дальше связываете этот user_id с пользователем. можно в том же запросе, получаете количество выполненных заказов для каждого покупателя. SELECT count(o.user_id) as order_count, SUM(o.total_price) as total_price, o.user_id, u.name FROM `s_orders` o LEFT JOIN `s_users` u ON o.user_id = u.id WHERE status=7 GROUP BY o.user_id ORDER BY order_count DESC на выходе получаете имя, айди покупателя, общую сумму покупок за заказы и количество самих заказов, отсортированное по убыванию Цитата Ссылка на сообщение Поделиться на другие сайты
interyes Опубликовано 26 ноября, 2015 Автор Жалоба Поделиться Опубликовано 26 ноября, 2015 С Stats.php начинать это делать надо? Как то так? <?php require_once('../../../api/Simpla.php'); class StatAjax extends Simpla { public function fetch() { $query = $this->db->placehold('SELECT count(o.user_id) as order_count, SUM(o.total_price) as total_price, o.user_id, u.name FROM `s_orders` o LEFT JOIN `s_users` u ON o.user_id = u.id WHERE status=2 GROUP BY o.user_id ORDER BY order_count DESC'); $this->db->query($query); $data = $this->db->results(); $results = array(); foreach($data as $d) { $result['sum'] = $d->sum; $result['o.user_id'] = $d->user_id; $results[] = $result; } return $results; } } $stat_ajax = new StatAjax(); header("Content-type: application/json; charset=utf-8"); header("Cache-Control: must-revalidate"); header("Pragma: no-cache"); header("Expires: -1"); $json = json_encode($stat_ajax->fetch()); print $json; Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 26 ноября, 2015 Жалоба Поделиться Опубликовано 26 ноября, 2015 Это нужно делать отдельно от статистики по продажам, это файл аякс статистики, а не контролер, создайте новый класс по примеру других контролеров админки, можно прицепить к юзерам это, выводить можно много где, как и выбирать это все. Например сделать выборку в той же статистике но в файле simpla/statsadmin.php (вроде так пишется, я с планшета, не помню) и передавать отдельным массивом Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 26 ноября, 2015 Жалоба Поделиться Опубликовано 26 ноября, 2015 Подобные разработки:http://simpla-tuning.com/otchet-o-prodazhah-po-tovaramhttp://simpla-tuning.com/otchet-o-prodazhah-v-razreze-tovarov-i-tsenВозможно изменение под Ваши потребности... Цитата Ссылка на сообщение Поделиться на другие сайты
interyes Опубликовано 26 ноября, 2015 Автор Жалоба Поделиться Опубликовано 26 ноября, 2015 Это нужно делать отдельно от статистики по продажам, это файл аякс статистики, а не контролер, создайте новый класс по примеру других контролеров админки, можно прицепить к юзерам это, выводить можно много где, как и выбирать это все. Например сделать выборку в той же статистике но в файле simpla/statsadmin.php (вроде так пишется, я с планшета, не помню) и передавать отдельным массивом <?PHP require_once('api/Simpla.php'); ############################################ # Class goodCategories displays a list of products categories ############################################ class StatsAdmin extends Simpla { public function fetch() { $result = mysql_query ("SELECT count(o.user_id) as order_count, SUM(o.total_price) as total_price, o.user_id, u.name FROM `s_orders` o LEFT JOIN `s_users` u ON o.user_id = u.id WHERE status=2 GROUP BY o.user_id ORDER BY order_count DESC"); $myres = mysql_fetch_array ($result); while ($myres = mysql_fetch_array($result)); return $this->design->fetch('stats.tpl'); } } В нужную сторону двигаюсь? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.