我是新手~用delphi不过两天~是为了做课设的`现在要做多表查询计算~请教个位大虾!
问题:我用的是delphi6.0,现在要从3个表中分别取一个数据进行乘固定数相加,再添入另一个表中`并按照这个值进行排名。
急急急!!希望大家帮小弟个忙!帮我写下代码~

解决方案 »

  1.   

    用SQL语句就够了,说清楚在告诉你
      

  2.   

    给出表,我们帮你写SQL语句。
      

  3.   

    sc(sno,cno,grade)
    kp(sno,dycgrade)
    zhqk(sno,avggrade,mc)
    就是上面3个表sc 表里有1号课和2号课现在要进行
    avggrade=1号课*0.6+2号课*0.2+dycgrade*0.2
    再按照avggrade排名放到zhqk表中
    我在线等~谢谢了
      

  4.   

    sc表  sno       cno      grade      95001      1        80
          95001      2        70
          95002      1        60
          95002      2        50
    kp表   sno       dycgrade      95001       80
          95002       70
    zhqk表是空表~等添数据的
         sno         avggrade    mc
      

  5.   

    insert into zhqk(sno,avggrade)
    select sno,sum(grade) from group by sno不知行不行。
      

  6.   

    avggrade=1号课*0.6+2号课*0.2+dycgrade*0.2
    还要有乘的啊`有什么好方法吗?》
      

  7.   

    select a.sno,a.q2+b.q3 from
     (select c.sno,sum(c.q1) as q2 from (select sno,case cno 
             when '1' then grade*0.6
             when '2'  then grade*0.2
           else 0
          end as q1 from sc) c group by c.sno) a,
     (select sno,(dycgrade*0.2) q3 from kp) b where a.sno=b.sno
    后面你应会了吧,可以给分了吧
      

  8.   

    用2个query和2个table,2个table分别连kp、zhqk表,例如:取名tkp、tzhqk,建一个别名,都连到它。
    var
     vi:float;
    tkp.open;
    tzhqk.open;
    query1.close;
    query1.sql.clear;
    query1.sql.add('select distinct sno from sc');
    query1.open;
    while not query1.eof do
    begin
     query2.close;
     query2.sql.clear;
     query2.sql.add('select * from sc where sno='''+query1['sno']+'''');
     query2.open;
     while not query2.eof do
     begin
      if query2['cno']=1 then
        vi:=vi+query2['grade']*0.6;
      if query2['cno']=2 then
        vi:=vi+query2['grade']*0.2;
      query2.next;
     end;
     tkp.locate('sno',query1['sno'],[]);
     vi:=vi+tkp['dycgrade']*0.2;
     if tzhqk.locate('sno',query1['sno'],[]) then
      tzhqk.edit
     else 
      tzhqk.append;
     tzhqk['sno']:=query1['sno'];
     tzhqk['avggrade']:=vi;
     tzhqk.post;
     query1.next;
    end;
      

  9.   

    补充:如果不是桌面数据库,如sql server等,可以不这样麻烦,用sql语句就可以了。