Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод промеуточных результатов в функции MySQL / 1 сообщений из 1, страница 1 из 1
29.11.2017, 13:39
    #39561248
A66aT_88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод промеуточных результатов в функции MySQL
Добрый день

Имеется 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 ;

Подскажите, пожалуйста, как сделать этот вывод ?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод промеуточных результатов в функции MySQL / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]