я создал 2 пользовательские поля профиля Employee ID (короткое_имя EmployeeID) организация (короткое_имя организация)SQL Moodle с помощью пользовательских полей профиля
Вот мой код:
SELECT
MAX(CASE WHEN f.shortname = 'employeeid' THEN uid.data ELSE '' END) AS 'Employee No.',
CONCAT(u.firstname,' ',u.lastname) AS 'Full Name',
CONCAT('<a target="_new" href="%%WWWROOT%%/user/profile.php?id=',u.id,'">', u.username,'</a>') AS 'User Name',
MAX(CASE WHEN f.shortname = 'Organisation' THEN uid.data ELSE '' END) AS 'Organisation',
c.fullname AS 'Course',
DATE_FORMAT(FROM_UNIXTIME(p.timeenrolled),'%m/%d/%Y') AS 'Enrollment Date',
DATE_FORMAT(FROM_UNIXTIME(p.timecompleted),'%m/%d/%Y') AS 'Completion Date',
DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(p.timecompleted),INTERVAL 1 YEAR), '%m/%d/%Y') AS 'Expiration Date'
FROM prefix_course_completions AS p
JOIN prefix_course AS c ON p.course = c.id
JOIN prefix_user AS u ON p.userid = u.id
JOIN prefix_user_info_data AS uid ON uid.userid = u.id
JOIN prefix_user_info_field f ON uid.fieldid = f.id
WHERE f.shortname IN ('employeeid', 'Organisation') IS NOT NULL
%%FILTER_COURSES:Course%%
%%FILTER_USERS:uid.data%%
%%FILTER_SEARCHTEXT:uid.data:~%%
GROUP BY u.id
Результаты в таблица отлично подходит, но всякий раз, когда я применяю фильтры, которые у меня есть (например, Filter by Organization, который является ниспадающим), он удаляет данные в столбце Employee Column, но все равно отображает другие данные в других столбцах.
Если я использую фильтр поискового текста, который предназначен для идентификатора сотрудника, данные в Организации будут удалены.
Есть ли способ предотвратить это? Помощь pls. Благодарю.
PS: Я использую конфигурируемые отчеты для создания SQL-запроса в Moodle
Привет Спасибо за это действительно супер. Просто сделал небольшое изменение в фильтрах %% FILTER_USERS: %% org.data %% FILTER_SEARCHTEXT: employee.data: ~ %% Спасибо так много. Я желаю вам очень веселого Рождества и счастливого нового года @ davosmith – Nightshade