私はこれに何日も苦労してきたので、混乱しすぎていたら申し訳ありません...
以下を定義する一連のテーブルがあります。
- スキルのグループ
- スキル
- 上記のグループ内のスキル (多対多)
- 役職
- それらの職務のスキル (多対多)
データベースの構造は次のようになります。
次のデータを表示する結果セットを作成する必要があります。
すべての職務について、それらの職務内のすべてのスキルを表示します。ただし、各ロールに含まれていない各グループ内のスキルも含めます (NULL またはその他の方法で示されます)。
テーブルとデータを作成するには、この作業コードを参照してください。 SQL Fiddle
長さについてお詫びします。現実的な例を作成するために多くの挿入を行いました。
スキルは役割にPowerPoint
追加されませんが、同じグループの他のスキルが追加されることに注意してください。また、スキルが役割に追加されていないHR Manager
ことにも注意してください。ただし、その役割にはそのグループの他のスキルが存在しないため、このギャップを確認する必要はありません。Recruitment Policy
Software Manager
私が目指す結果は次のようになります (簡潔にするためにスーパー スターの役割は除きます)。
RoleTitle GroupTitle SkillTitle SkillIsInRole
----------------------- -------------------------- --------------------------------------
Software Manager Microsoft Office Excel 1
Software Manager Microsoft Office Word 1
Software Manager Microsoft Office PowerPoint 1
Software Manager Microsoft SQL Server Query Design 1
Software Manager Microsoft SQL Server Stored Procedures 1
Software Manager Microsoft SQL Server Failover Clustering 1
HR Manager Microsoft Office Excel 1
HR Manager Microsoft Office Word 1
HR Manager Microsoft Office PowerPoint NULL <-- not added to role but exists in same group as other used skills
HR Manager HR Recruitment Policy 1