Vous devez joindre la table des utilisateurs deux fois car vous la faites correspondre à la fois pour le nom du membre et le nom du superviseur. J'ai aussi utilisé LEFT JOIN
car parfois la raison n'a pas de valeur mais vous voulez quand même extraire les enregistrements des autres tables.
SELECT u1.userid, a.date, u1.name, d.reason, u2.name AS supervisor
FROM user u1
LEFT JOIN attendance a ON u1.userid = a.member
LEFT JOIN detail d ON u1.userid = d.userid
LEFT JOIN user u2 ON a.supervisor = u2.userid
WHERE d.attendance = 0