PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 7
Byrger Отправлено: 07 Января, 2015 - 11:45:07 • Тема: Перевод суммы в текст (для банка) • Форум: Вопросы новичков

Ответов: 1
Просмотров: 90
Привет

Подскажите скрипт который переводит число в текст
Пример 3000.00 руб должно перевести в "три тысячи рублей 00 копеек"

К сожалению поиск не дал никаких результатов
Byrger Отправлено: 23 Августа, 2014 - 16:35:30 • Тема: Сложный запрос для вывода графиков • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 76
Мелкий пишет:
Нуу. Я-то думал, это админская статистика с аггрегацией по всей таблице.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT EXTRACT(YEAR_MONTH FROM `time`), sum(sum) FROM `table` WHERE user_id=? AND time BETWEEN начало_всего_периода AND конец_всего_периода AND (STATUS=50 OR STATUS=10) GROUP BY 1

Вот и получили весь график. При необходимости, заполните отсутствующие месяцы на стороне приложение.
Постройте индекс user_id & status & time (это один индекс, а не три) и user_id & time, посмотрите по explain'у, какой из них используется. Неиспользуемый удалить.


Спасибо большое.
Буду теперь читать про индексы в MySQL, как из верно использовать и про доп функции.
Для того чтоб оптимизировать код. Загрузка страницы сократилась с 0,8 до 0,2
explain выдает теперь всего 3000 значений

Только у меня даты в UNIX time, пришлось немного по другому переписать
CODE (SQL):
скопировать код в буфер обмена
  1. DATE_FORMAT(FROM_UNIXTIME(`time`), '%m')
Byrger Отправлено: 23 Августа, 2014 - 15:20:45 • Тема: Сложный запрос для вывода графиков • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 76
Частость захода на страницу зависит от юзера, если онлайн на сайте 50-100 человек то думаю в статистику могут заходить как минимум раз в секунду.

Значение user_id, зависит от самого юзера который зашел на страницу
В итоге нужно получить построение графика для статистики покупок
В день примерно +5 000-8 000 данных добавляется в таблицу (но не все валидные по status для нашей задачи)
Byrger Отправлено: 23 Августа, 2014 - 14:07:19 • Тема: Сложный запрос для вывода графиков • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 76
У меня получился такой вот запрос к примеру на 1 месяц

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT user_id, sum(sum) FROM `reports` WHERE user_id=4 AND time >=1358895600 AND time <1361574000 AND (STATUS=50 OR STATUS=10)  GROUP BY service_id


Он грузит бд на 0,6сек... это очень много для 12 штук на 1 странице
explain выдает 84 000 rows
Я прописал индексы к user_id, time, status запос стал быстрее 0,3 сек и 42 000rows но все равно очень медленно для 12 запросов и нагрузка большая
(Добавление)
Так-же мне нужно вывести почасовую статистику за сегодня.
Так-же 24 запроса что ли делать =(
Ну хотя можно 1 запрос на вывод всех данных и уже с помощью PHP сгруппировать по часам (думаю так быстрее будет)
Как думайте?
Byrger Отправлено: 23 Августа, 2014 - 12:03:12 • Тема: Сложный запрос для вывода графиков • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 76
Привет.

Прошу помощи. Как лучше реализовать статистику в виде графика на сайте.
И именно:

Имеется таблица которая насчитывает более 100млн значений.
В ней содержаться операции
К примеру user_id пополнил на 50руб и так далее
Нужно вывести график(сделать сложный запрос) по месяцам и юзерам

На графике ось X 12 месяцевб ось Y суммы, а сам график привязан к пользователю

БД выглядит примерно так:
id, user_id, sum, time

Вот в голове пока сделать 12 запросов, сгруппировать все по юзеру и вывести сумму.
Примерно так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT sum(sum), user_id FROM TABLE WHERE (user_id=? OR user_id=? ....) time>=? AND time<? GROUP BY user_id


Но мне кажется БД и скрипту будет тяжка с этими 12ти запросами по базе в 100млн
Byrger Отправлено: 19 Января, 2010 - 20:14:20 • Тема: кириллица в регулярке • Форум: Регулярные выражения

Ответов: 1
Просмотров: 197
PHP:
скопировать код в буфер обмена
  1. function IsValidVopr($login){
  2.     if(preg_match("/^[А-Яа-яA-Za-z0-9]{3,16}$/i",trim($login))) return(1); else return(0);
  3. }


Почему если передать функции текст на кириллеце то она вернет 0 ?

ПС страница на Utf-8
Byrger Отправлено: 16 Января, 2010 - 19:43:51 • Тема: Работа с несколькими БД (mysql) • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 22
Есть класс работы с БД (ниже кинул начало класса)
Но вот не могу понять почему при вызове его примерно так
PHP:
скопировать код в буфер обмена
  1. $db1 = new db(....vars.....);
  2. $db2 = new db(....vars.....);


А потом начинаю делать запрос вида
PHP:
скопировать код в буфер обмена
  1. $db1->query(...запос....);
  2. $db2->query(...запос....);


ТО скрипт работает с 1 БД которая вызвана пойзже =(
Как сделать чтоб класс работал нормально с несколькими БД

PHP:
скопировать код в буфер обмена
  1. class db {
  2.  
  3.         var $sql_host;
  4.         var $sql_user;
  5.         var $sql_pass;
  6.         var $sql_base;
  7.             var $sql_charset = "utf8";
  8.             var $sql_count   = 0;
  9.             var $sql_error   = true;
  10.         var $link_id = 0;
  11.  
  12.         function __construct($host,$user,$pass,$base,$code,$sql_error) {
  13.           $this->sql_host=$host;
  14.           $this->sql_user=$user;
  15.           $this->sql_pass=$pass;
  16.           $this->sql_base=$base;
  17.               $this->sql_charset=$code;
  18.               $this->error=$error;
  19.           $this->connect();
  20.         }
  21.  
  22.         function connect() {
  23.           $this->link_id=@mysql_connect($this->sql_host,$this->sql_user,$this->sql_pass);
  24.           if(!$this->link_id) $this->error("False link == Error to connect the database");
  25.           $selecting_base=@mysql_select_db($this->sql_base,$this->link_id);
  26.           if(!$selecting_base) $this->error("Flase base == Error to select the database");
  27.               $coder_query=@mysql_query("SET NAMES '$this->sql_charset'");
  28.               if(!$coder_query) $this->error("Error set $this->sql_charset");
  29.         }
  30.  
  31.  
  32.  
  33.         function query($query_string) {
  34.           $selecting_query=@mysql_query($query_string,$this->link_id);
  35.               $this->sql_count ++;
  36.           if(!$selecting_query) $this->error("False query == $query_string");
  37.           return $selecting_query;
  38.         }
  39. .......

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB