中国教程网《Photoshop专家讲堂》光盘热售参与论坛活动,快速赚取金币精品素材,中英文字体
发新话题
打印

新手求教SQL多表查询问题~~

新手求教SQL多表查询问题~~


新手求教SQL多表查询问题~~  
我在做程序时,遇到一个问题,怎么也解决不了,所以来请教各位高手  
现在有一个库存表(KC),一个入库表(RK),一个出库表(CHK),都有CARDTYPE字段,我需要通过这个字段,在一条语句中同时取出本月库存表中的现有数量(NUM),入库表中的入库数量(RKNUM),出库表中的出库数量(CHKNUM),可是想得头快BOMO了,都没想出来怎么写~~  
主要是因为要通过一条SQL语句生成一条记录以显示,但入库表和出库表中有时本月会没有入出库记录,那么应当显示为入出库数量为零,但现在是没有入出库记录就没有查询结果,于是有的CARDTYPE类型结果没有查到,而如果入出库记录只有其中一个有,那么结果可以查出,但只有有记录的结果正确,没有记录的数量不正确(实际上和有记录的结果一样),怎么解决?求助~~~  

我的SQL语句大约是这么写的:  
select  kc.cardtype  ,a.rkNum,b.chkNum  from  (select  kc.cardtype  cardtype,sum(rk.NUM)  rkNum  from  rk,kc  where  rk.cardtype=kc.cardtype)  a,(select  kc.cardtype  cardtype,sum(chk.NUM)  chkNum  from  chk,kc  where  chk.cardtype=kc.cardtype)  b  where  a.cardtype=kc.cardtype  
group  by  kc.cardtype  

因为是在公司写的,在家中又没有SQLServer,所以只是凭记忆写的,可能有些地方不对,我在这方面还是新手,吼吼  
我的问题究竟在那里?请各位高手不吝赐教:)  




试试:  
select  t1.cardtype,kcNum=isnull(sum(t1.kcNum),0),rkNum=isnull(sum(t2.rkNum),0),chkNum=isnull(sum(t3.chkNum),0)  
from  kc  t1  left  join  rk  t2  on  t1.cardtype=t2.cardtype  
                     left  join  chk  t3  on  t1.cardtype=t3.cardtype  
group  by  t1.cardtype  
order  by  t1.cardtype

TOP

发新话题