accese2000中五表汇总关联 (100分)

  • 主题发起人 HUANGPEIYAN
  • 开始时间
H

HUANGPEIYAN

Unregistered / Unconfirmed
GUEST, unregistred user!
accese好像只有三种联接类型 LEFT,RIGHT,INNER?
没有full联接类型。
五个表是:产品类型/不良批次/过程不良品/质量损失记录/退货登记表,以下是LEFT语句。

我用LEFT连接,结果大很多。如下
类型名称 数量 正确数 倍数 批量 不良品数量 -----后面字段略
打火簧类 135896 /67948 2 8640 8640
减振簧类 185220 /15435 12
其他类 30712 /7678 4
气门簧类 880932 /73411 12 41760 73080
压簧类 115983 /38661 3 5400 5400

我用inner连接,只有三条记录
类型名称 数量 批量 不良品数量-----后面字段略
打火簧类 135896 8640 8640
气门簧类 880932 41760 73080
压簧类 115983 5400 5400

RIGHT连接出错

SELECT [产品类型].[类型名称], Sum([不良批次].[数量]) AS 数量, Sum([过程不良品].[批量]) AS 批量, Sum([质量损失记录].[返工数量]) AS 返工数量之, Sum([退货登记表].[退货数量]) AS 退货数量
FROM ((((产品类型 LEFT JOIN 不良批次 ON 产品类型.类型代码 = 不良批次.类型代码) LEFT JOIN 过程不良品 ON 产品类型.类型代码 = 过程不良品.类型代码) LEFT JOIN 质量损失记录 ON 产品类型.类型代码 = 质量损失记录.类型代码) LEFT JOIN 退货登记表 ON 产品类型.类型代码 = 退货登记表.类型代码)
WHERE ((([不良批次].[检验日期]) Between #1/1/2002# And #12/31/2002#)) Or ((([过程不良品].[日期]) Between #1/1/2002# And #12/31/2002#)) Or ((([质量损失记录].[日期]) Between #1/1/2002# And #12/31/2002#))
GROUP BY [产品类型].[类型名称], [不良批次].[类型代码], [过程不良品].[类型代码], [质量损失记录].[类型代码], [退货登记表].[类型代码];

用 MS-SQL 的full outer join连接得出结果正确.
我只好另建一个类型汇总表,然后将各质量表中的数添加进去,不知有没有什么简便方法?(我也想用ms-sql2000, 但因为公司的服务器是nw4.1,我是将accese数据库放在服务器上共xian的,想不到其它好办法……
 
结束问题!
 
顶部