powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запросы информации по каждому дню месяца и обработка информации.
1 сообщений из 1, страница 1 из 1
Запросы информации по каждому дню месяца и обработка информации.
    #39645718
LawyerLY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть в Битриксе несколько таблиц отвечающих за отчёт рабочего времени. Если с отработанным временем всё просто, это таблица: b_timeman_entries и интересующие столбцы: user_id (id пользователя) и duratio (секунд рабочего времени) и есть таблица b_user - где хранится информация по пользователю и тут нас интересуют столбцы id, last_name, name.
Получаем запрос за май с сохранением в файл:
SELECT u.last_name, u.name, DATE(t.date_start), DATE(t.date_finish), ROUND(t.duration/3600,2)
FROM b_timeman_entries AS t
INNER JOIN b_user AS u ON u.id = t.user_id
WHERE
DATE(t.date_start) BETWEEN STR_TO_DATE('2018-05-01', '%Y-%m-%d')
AND
STR_TO_DATE('2018-05-31', '%Y-%m-%d') order by t.date_start
INTO OUTFILE '/var/lib/mysql-files/may.txt';
Так как информация храниться на каждого пользователя, на каждый день отдельно, то всё получается замечательно. Подхватываю файл Excel-ем и делаю сводную таблицу.

Но есть ещё информация, когда люди в отпуске, в отгуле или были в командировке (в местной командировке), эта информация храниться в другИХ таблиАХ и с периодами дат. Т.е. с 2018-05-15 по 2018-05-21 (в двух столбцах).
Таблицы:
b_iblock_element - основные данные про отсутствия:
столбцы:
iblock_id - который должен быть равен 3 чтоб отобрать нужную информацию
active_from - начала события
active_to - окончание события
name - просто описание события (можно тоже выгружать, чтоб использовать вместо duration в сводной таблице
xml_id - по этому id мы выбираем дополнительную таблицу , в которой будет информацию к какому пользователю относиться это событие.
Таблица b_iblock_element_property даёт нам точное определение к кому принадлежит данное событие и к какой категории она относиться.
столбцы:
iblock_element_id - как раз равен xml_id из прошлой таблицы (по каждому значению две записи - для кого и какое событие)
iblock_property_id - если равен 4 - то в значении value указывается пользователь, если 7 - то указывается тип события
value - значение или пользователя или тип события.
Чтоб выгрузить за один день информацию, написал следующий запрос:
SELECT
(SELECT u.last_name FROM b_user AS u WHERE u.id = (SELECT ep.value FROM b_iblock_element_property AS ep WHERE ep.iblock_property_id = '4' AND ep.iblock_element_id = e.xml_id)) AS last_name,
(SELECT u.name FROM b_user AS u WHERE u.id = (SELECT ep.value FROM b_iblock_element_property AS ep WHERE ep.iblock_property_id = '4'AND ep.iblock_element_id = e.xml_id)) AS name,
(SELECT pe.value FROM b_iblock_property_enum AS pe WHERE pe.id = (SELECT ep.value
FROM b_iblock_element_property AS ep
WHERE
ep.iblock_property_id = '7'
AND
ep.iblock_element_id = e.xml_id)) AS Type
FROM b_iblock_element AS e
WHERE e.iblock_id = '3' AND DATE(e.active_from) <= '2018-05-01' AND DATE(e.active_to) >= '2018-05-01';

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


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