我有6个SQL表
TABLE Person ( per_id , name , email , gender , DOB )
TABLE Job ( job_id , jp_code , pay_rate , company )
TABLE JobProfile ( jp_code , title , description )
TABLE Skill ( sk_code , skillName , description )
TABLE Requires ( jp_code , sk_code )
TABLE Possess(per_id, sk_code)
从此表中
我无法形成攻击此类问题的程序。通常,我最终会花费数小时完成一项任务。显然,我在这里错过了一些方向。如果有人告诉我如何在SQL中处理这样的问题会很有帮助。
答案 0 :(得分:0)
A) Person表与Skill无关,因此无法将Skillset与Person相关联。如果你们之间会有一些关系(可能是一个新的表,它将许多sk_codes与许多相同的per_id相互交换?)。
您必须从该人员技能组中选择所有sk_codes。让我们说这是陈述X
然后你必须找到一个作业所需的所有sk_codes,所以给定一个jp_code选择来自需要jp_code匹配的所有sk_codes。声明Y
所以现在你有X =一个人的所有sk_codes,Y =一个工作所需的所有sk_codes。最后选择sk_code是这两者的子集的所有技能(一个人需要缺少的sk_codes)
b)非常类似于a。找到人员sk_codes,然后找到一个来自Requires的jp_code,其中包含所有这些并且没有一个未完成。
c)可能会遗漏更多信息,因为作业在他有资格的列表中,然后我们从b)只需从作业中选择max(pay_rate)
d)查找与jp_code相关的所有sk_codes,然后选择所有未完成的per_ids
我建议您阅读INNER_JOIN