学生选题表(sdu_id,ques_id ,指标1,指标2),每个学生选择多到题。
教师出题表(ques_id,tea_id)每个教师出多道题。
教师限制表(tea_id,max)该教师最多指导学生做题数。
要求:
   对于选题表先根据指标1,2降序排列。选择该同学指标1,2尽量靠前(因为还要满足该出题教师指导学生的限制)的1道题。还要保证一道题只能由1个同学选择!
   由于sql水平有限,正在学习中。希望各位dgdj帮下忙,谢谢了!

解决方案 »

  1.   


    首先根据对选题表按指标1,2排序。
    然后逐行查看每条选题记录:
      (1).看该同学是否已经确定出一道题 ,“是” 取下一条记录,“否” 检查(2)
      (2).看该题是否已经被一个同学选择,“是” 取下一条记录,“否” 检查(3) 
      (3).再检查该出题教师指导学生是否达到限制,“是”取下一条,“否” 这该题由当前同学做!
    结果 确定出每一个同学选择的题,有可能有的同学不能选到题。结果可以是另外一张表,也可以加一个字段flag标识。
    教师限制表:
        tea_id  max
        t1001    2
        t1005    2
        t1006    1
    ……
    教师出题表:每个教师给出3道题供学生选择
       ques_id  tea_id
        q1001   t1001
        q1002   t1001
        q1003   t1005
        q1004   t1006
        q1005   t1001
        q1006   t1005
        q1007   t1005
        q1008   t1006
        q1009   t1006
        ……
    学生选题表:根据指标1,2排好序
       stu_id  ques_id  指标1  指标2
        s1002   q1005    99    95
        s1003   q1001    99    93
        s1001   q1001    95    92
        s1003   q1006    94    90
        s1004   q1002    92    90
        ………… 上面记录:
       s1002   q1005    99    95  --(1),(2),(3)都满足,则确定他选本题
       s1003   q1001    99    93  --(1),(2),(3)都满足,则确定他选本题
       s1001   q1001    95    92  --(2)不满足,取下一条
       s1003   q1006    94    90  --(1)不满足,取下一条
       s1004   q1002    92    90  --(3)不满足,取下一条
       ……
    怎么来实现,各位有什么好的办法?