Мне кажется, я нашел хотя бы часть вашей проблемы.
В вашем запросе вы делаете INNER JOIN prefix_cohort_members AS co ON co.cohortid=u.id
. Это соединение идентификатора группы с идентификатором пользователя, а не идентификатором пользователя с идентификатором пользователя. Я считаю, что правильная строка - INNER JOIN prefix_cohort_members AS co ON co.userid=u.id
Также в вашем запросе вы делаете DATE_FORMAT(FROM_UNIXTIME(p.timecompleted),'%Y-%m-%d') AS completed
и p.timecompleted
, которые оба возвращают завершенное время. Я не уверен, что это то, что вы хотели, но если вы хотите отобразить дату зачисления, это добавит, что для вас
DATE_FORMAT(FROM_UNIXTIME(p.timeenrolled),'%Y-%m-%d') AS enrolled
С этими двумя изменениями я смог создать отчет со строкой, содержащейbool, который показывает, закончил ли пользователь курс или не использует этот блок:
CASE
when p.timecompleted is null THEN 'False'
ELSE 'True'
END AS completed
ПРИМЕЧАНИЕ. Я также не использовал внутреннее соединение, вместо этого выбрав JOIN. Я не уверен, что это изменило ситуацию, но если указанные выше изменения не работают для вас, то может помочь изменение внутреннего соединения на просто JOIN.