I think you may have your joins mixed up
First you need to get a list of all employees and all possible skills. To do this you use what is called a Cartesian query (no joins)
Code:
SELECT EENumber, FirstName, LastName, SKillID, Description
FROM EmployeeT, SkillT
then you want to compare this list with what is in the modules table - and report back where there is not a matching record, for this you need a left join from the above query to the modulesT table and find those records where the module fields are null
Code:
SELECT T.*
FROM (SELECT EENumber, FirstName, LastName, SKillID, Description FROM EmployeeT, SkillT) T LEFT JOIN ModulesT M ON T.EENumber=M.EENumber AND T.SkillID=M.SkillID
WHERE M.SkillID is Null
ORDER BY EENumber, Description
I'm not sure of the meaning of Mod_Inactive - but the above does not take it into account. If the employee has not had the training, then there won't be a related record with Mod_Inactive set either way.