有三个表:tab1,tab2,tab3
tab1关键字段:zmlm,gdm,gdhzm
tab2关键字段:zmlm,gdm,cid
tab3关键字段:cid,a1,a2,a3……
关系:tab1中zmlm和gdm共同确定一唯一记录;
      tab2中cid确定唯一记录,zmlm,gdm有重复;
      tab3中cid唯一确定一条记录;
如:tab1
zmlm,gdm,gdhzm
dzp,1,一股
dzp,2,二股
dzp,3,专线
zdp,1,一股
zdp,2,三股
.
.
.
tab2
zmlm,gdm,cid
dzp,1,12342
dzp,1,32145
dzp,2,43221
dzp,3,5322
dzp,3,53322
dzp,3,2345
zdp,1,9332
zdp,2,8987
zdp,2,9877
zdp,3,9991
.
.
.
tab3:
cid,a1,a2,a3……
12342,21,21,c……
32145,32,43,p……
43221,22,32,g……
5322,43,54,p……
53322,32,43,p……
.
.
.从tab1中选取zmlm,gdm,通过这两个字段从tab2中选取cid,
可能有n条记录。再从tab3中汇总符合此cid的其它字段。
要求下列结果:
zmlm,gdhzm,result
dzp,一股,c_1,p_1
dzp,二股,g_1
dzp,三股,p_2
意思是:result 字段的结果是汇总出来的,c_1表示由tab1表
中zmlm=dzp和gdm=1为条件从tab2中查询cid,有两条记录为
cid=12342和cid=32145,再从tab3中查询这两个cid,并分别
汇总a3字段,表示有一个c,有一个p,下同。
并希望在dbgrid中显示出来。
请大侠帮忙。还可以加分,在线等待……

解决方案 »

  1.   

    select f.*,d.cid from table3 as d ,(select a.zmlm,b.gdhzm,a.cid from table2 as a ,table1 as b where a.zmlm=b.zmlm and a.gdm=b.gdm) as f 
    where d.cid=f.cid  result 這個字段是什麼意思暫不明 
      

  2.   

    select a.zmlm
    ,a.gdm
    ,b.cidfrom table1 as a
    right outer join table2 b on a.zmlm=a.zmlm
    right outer join table3 c on b.cid=c.cid
    where a.gdm=b.gdm
    group by a.zmlm,a.gdm,b.cid
      

  3.   

    select tab1.zmlm,gdhzm,sum(cid) result
    from tab1 join 
    (select zmlm,cid from tab2 join tab3 on tab2.cid=tab3.cid)  TmpTab
    on tab1.zmlm=TmpTab.zmlm
    group by tab1.zmlm,gdhzm