我这里有四个表,a、b、c、d
表a(最后的成绩表)
  a1      a2    a3  
 张三    语文   66
 李四    语文   77
 张三    数学   55
 李四    数学   88
 张三    英语   99
……
表b(相当于补考科目表)
  b1      b2  
 张三     语文
 李四     数学
……
表c(相当于应该考的科目表)
  c1       c2
 张三     英语
 张三     数学
 李四     语文表d
  d1    d2             
 张三   # 状态 #
……要求:统计出 每个人(应该考的+补考的)成绩是否都出来了,如果成绩和科目都完全对应(就是说各科的成绩都出来了)就把表d   的状态更新为1。有结果后立刻结分()

解决方案 »

  1.   

    初步给出一个答案,经过调试的!这个语句可以查出当前考试都参加的人,如果你想要插入d表,在头上加上“insert into d(d1,d2) ”就可以了,不过别忘了给最外层select对应“d2”的加个你的常量字段哟!不知道是不是你的意思!我先接分了select m.a from 
    ((select a,b from c) 
    union
    (select a,b from b)) as m
    where m.a not in
    (
    select m.a from 
    ((select a,b from c) 
    union
    (select a,b from b)) as m
    left join a 
    on a.a=m.a and a.b=m.b
    where a.c is null)
    group by m.a