私の理解では、すべてのスキルをすべてのユーザーに配布したいと考えています。これが、以下のクエリにデカルト積を生成するサブクエリがある理由です。積の結果はテーブルtblEmployeeと再び結合tblSkillされ、それぞれの名前を取得できるようになります。
そして最後の部分はLEFT JOIN、ユーザーに対する特定のスキルが table に存在するかどうかを確認するためのものtblEmployeeSkillです。結果が の場合NULL、ユーザーがまだそのスキルを持っていないことを意味します。
SELECT y.name EmployeeName,
z.name SkillName,
CASE WHEN xx.skillID IS NULL
THEN 'NO'
ELSE 'YES'
END status
FROM
(
SELECT a.employeeID, b.skillID
FROM tblEmployee a
CROSS JOIN tblSkill b
) x
INNER JOIN tblEmployee y
ON x.employeeID = y.employeeID
INNER JOIN tblSkill z
ON x.skillID = z.skillID
LEFT JOIN tblEmployeeSkill xx
ON x.employeeID = xx.employeeID AND
x.skillID = xx.skillID
-- WHERE x.employeeId = 1 -- uncomment this if you
-- want to select only one user