如何写这样的sql
有三张表HRResume(简历表):
ID PersonName DegreeId(学历) WorkYearId(工作年限) ...
1 张三 2 1
2 李四 1 2
3 王二 4 4
......................
其中DegreeId:1,中学,2,大专,3,本科,4,硕士,5,博士
WorkYearId:1,应届毕业生,2,一年以上,3,二年以上,4,三年以上,5,五年以上,6,八年以上,
RecruitReq(招聘需求表)
ID DeptId(部门) PositionId(岗位) DegreeId(学历) WorkYearId(工作年限) ...
1 1 10 2 2
2 2 11 1 4
.....................
RequestOrder(应聘单据表)
ID ResumeId(简历编号) ReqId(招聘需求编号) OrderDate
1 1 1 2011-02-16
2 2 1 2011-02-16
3 2 2 2011-02-16
..................
现在要再应聘单据表中找出符合招聘需求中的条件的应聘单据。也就是说:
招聘需求表中ID为1的那条记录:部门为1,岗位为10的招聘需求中,要求学历为大专,工作年限为一年以上,那么在应聘单据表中需要按照ResumeId(简历编号)到简历表中查找此应聘人的学历跟工作年限,如果符合那么筛选出来。此处需要注意的是如果应聘需求表中学历为大专,工作年限为一年以上,那么在应聘单据表中应聘人的简历学历在大专以上,工作年限在一年以上的都应该查找出来。请问如何写这样的sql?
[解决办法]
select a.* from RequestOrder a left join RecruitReq b on a.ReqId=b.ID
left join HRResume a on c.ID=a.ResumeId where c.DegreeId=2 and WorkYearId=2
[解决办法]
select ro.*, rr.*, hr.* from RequestOrder join RecruitReq rr on ro.ReqId = rr.ID left join HRResume hr on ro.ResumeId = hr.ID where hr.DegreeId >= rr.DegreeId and hr.WorkYearId >= rr.WorkYearId
[解决办法]
select ro.*, rr.*, hr.* from RequestOrder ro join RecruitReq rr on ro.ReqId = rr.ID left join HRResume hr on ro.ResumeId = hr.ID where hr.DegreeId >= rr.DegreeId and hr.WorkYearId >= rr.WorkYearId
[解决办法]
select a.PositionId,a.DegreeId,a.WorkYearId,,a.PositionId,b.DeptId,b.PositionId,b.DegreeId,b.WorkYearId,c.PersonName,c.DegreeId,c.WorkYearIdfrom RecruitReq as a inner join RequestOrder as b on a.ID=b.ReqId left join HRResume as con c.Id=b.ResumeId where a.DegreeId>=c.DegreeId and a.WorkYearId>=c.WorkYearId