"the last access" to what? A Course or the Site?
Once you define that try this MS Transact query for your first question:
SELECT
mdl_user.username,
mdl_user.firstname,
mdl_user.lastname,
mdl_user.firstaccess AS first_accessed_site,
mdl_user.lastaccess AS last_accessed_site,
mdl_course.id AS course_id,
mdl_course.fullname AS course_full_name,
mdl_user_lastaccess.timeaccess AS last_accessed_course
FROM
mdl_course
INNER JOIN mdl_course_categories ON mdl_course.category = mdl_course_categories.id
INNER JOIN mdl_user_lastaccess ON mdl_course.id = mdl_user_lastaccess.id
INNER JOIN mdl_user ON mdl_user_lastaccess.userid = mdl_user.id
WHERE
mdl_course.id = 'YOUR_COURSE_ID'
You can use "mdl_course.fullname" instead of "mdl_course.id" in the WHERE clause - but using "mdl_course.id" will guarantee you a unique value (whereas you could have multiple courses with the same mdl_course.fullname).
Your second question isn't as clear. Please provide more details.