Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запросы информации по каждому дню месяца и обработка информации.
|
|||
|---|---|---|---|
|
#18+
Есть в Битриксе несколько таблиц отвечающих за отчёт рабочего времени. Если с отработанным временем всё просто, это таблица: 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'; Помогите собрать запрос так, чтоб он выгружал информацию за месяц. Очень не разобрался с циклами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2018, 18:04 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1829847]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 18ms |
| total: | 141ms |

| 0 / 0 |
