Moodle SQL - Запросы к базе данных Adhoc (объединение двух запросов) - PullRequest
0 голосов
/ 06 февраля 2019

Я использовал два отдельных запроса SQL для извлечения важной пользовательской информации из Moodle (v3.5), которая мне нужна для офлайн-биллинга.

Первый запрос, приведенный ниже, дает большинство существенных деталей, однако, он не дает дату, когда пользователь записался на определенный курс.

Пользователь может зарегистрироваться на портале 1 января, он может зарегистрироваться в курсе 1 15 января и впоследствиизаписаться на курс 2 15 февраля.Мне нужно отследить фактическую дату зачисления на конкретный курс.

Во втором приведенном ниже SQL-запросе указана фактическая дата зачисления на курс в последнем столбце.Но он не дает идентификатор электронной почты и не предоставляет настраиваемые поля - State & City.

В настоящее время я выполняю оба запроса, переношу их в электронную таблицу и выполню Vlookup с использованием идентификатора пользователя в первом столбце.каждого отчета.Это довольно неточно, поскольку один и тот же идентификатор пользователя повторяется несколько раз, и Excel ищет первый раз.

Короче:

Мне просто нужно добавить дату зачисления на курс'от последнего столбца второго запроса до первого запроса ниже.

Я перепробовал все, что мог, в меру своих навыков SQL (которые в лучшем случае жалки).

Я искренне признателен за любую помощь в изменении запроса ниже.

Запрос 1

SELECT

user2.id AS userid,

user2.username AS username,

user2.firstname AS Firstname,

user2.lastname AS Lastname,

user2.email AS Email,


(SELECT UID.data FROM prefix_user_info_field UIF, prefix_user_info_data UID WHERE UID.fieldid = UIF.id AND UIF.shortname = 'usercity' AND UID.userid = user2.id) as 'usercity',

(SELECT UID.data FROM prefix_user_info_field UIF, prefix_user_info_data UID WHERE UID.fieldid = UIF.id AND UIF.shortname = 'userstate' AND UID.userid = user2.id) as 'state',

(SELECT UID.data FROM prefix_user_info_field UIF, prefix_user_info_data UID WHERE UID.fieldid = UIF.id AND UIF.shortname = 'mobilephone' AND UID.userid = user2.id) as 'mobilephone',

course.fullname AS Course

FROM prefix_course AS course 

JOIN prefix_enrol AS en ON en.courseid = course.id

JOIN prefix_user_enrolments AS ue ON ue.enrolid = en.id

JOIN prefix_user AS user2 ON ue.userid = user2.id

Запрос 2

SELECT 
u.id,
u.username,
u.lastname,
u.firstname,
c.fullname,

DATE_FORMAT(FROM_UNIXTIME(ue.timecreated), '%Y-%m-%d %H:%i') AS 'Timecreated' FROM prefix_user_enrolments ue LEFT JOIN prefix_enrol e ON (ue.enrolid = e.id) LEFT JOIN prefix_course c ON (e.courseid = c.id) LEFT JOIN prefix_user u ON (ue.userid = u.id)
...