Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вывод промеуточных результатов в функции MySQL
|
|||
|---|---|---|---|
|
#18+
Добрый день Имеется SELECT, который, допустим выводит данные из таблицы начиная с определнного числа, скажем SELECT DATE_FORMAT(time, '%e.%m.%Y') AS date, (SELECT count(*) FROM log WHERE user='admin') AS adm_count, (select count(*) FROM log WHERE user='user') AS user_count, (SELECT SEC_TO_TIME(MAX(CAST(login_time AS DECIMAL))) FROM log) AS long_login FROM log WHERE DATE(time) > '2017-11-10 00:00:00' GROUP BY EXTRACT(DAY FROM time); Мне необходимо выводить данные под одной строке за каждый день в заданном диапазоне. Т.е. вывод должен выглядеть примерно так +------------+----------+----------+--------------+ | date |adm_count|user_count| long_login | +------------+----------+----------+--------------+ | 13.11.2017 | 28 | 45 | 0:24:01 | | 14.11.2017 | 35 | 77 | 0:16:05 | | 15.11.2017 | 47 | 14 | 0:18:55 | | 16.11.2017 | 53 | 84 | 0:33:38 | +------------+----------+----------+--------------+ Но в данный момент времени, при вводе вышеуказанного селекта, я получаю суммарные данный за заданный период (т.е. с '2017-11-10 00:00:00'). Единственное, что пришло в голову - сделать функцию, в котору будет передаваться дата начала и конца диапазона, и которая будет в цикле выполнять данный запрос и вы водить данные. Пример функции DELIMITER $$ CREATE FUNCTION looptest_echo(time_start DATETIME, time_end DATETIME) RETURNS TEXT ---------------- (тут тестово пока вывожу какой-то текст) BEGIN DECLARE loopcounter DATETIME; DECLARE text TEXT; set loopcounter = time_start; count_loop: LOOP select name from osdial_documents as text INTO text; ------(Тестовый селект) set loopcounter = DATE_ADD(loopcounter, INTERVAL 1 DAY); RETURN text; ---------------- (тут тестово пока вывожу какой-то текст) if loopcounter = time_end THEN LEAVE count_loop; END IF; END LOOP; END; $$ DELIMITER ; Подскажите, пожалуйста, как сделать этот вывод ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2017, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1830222]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 133ms |

| 0 / 0 |
