新手求教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

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus