有两个表,订单表和生产表
订单表,有ID,订单号,物料编码,物料描述,印字,订单数量字段,包含如下对应内容
1,4900003400,AH0000001,SS3401,A1,2000
2,4900003400,AH0000002,SS3402,A2,3000
3,4900003400,AH0000001,SS3401,A1,1000
4,4900003400,AH0000001,SS3401,A1+,12000
5,4900003401,AH0000001,SS3401,A1,6000
生产表,有生产ID,订单号,物料编码,物料描述,印字,生产数量字段,包含如下对应内容
1,4900003400,AH0000001,SS3401,A1,50
2,4900003400,AH0000001,SS3401,A1,10
请问如何通过联合查询,得到如下结果
订单号 物料编码 物料描述 印字 订单数量 生产数量 未安排数量
4900003400 AH0000001 SS3401 A1 3000 60 2940
4900003400 AH0000001 SS3401 A1+ 12000 0 12000
4900003400 AH0000002 SS3402 A2 3000 0 3000
4900003401 AH0000001 SS3401 A1 6000 0 6000
请问是关联哪几个字段
当表A所要求字段不与表B对等,那生产数量怎么是空白的,不是为0呢
追答left join右边不就是关联字段吗? 你数数看几个
空白变0好办,NZ函数 NZ(B.[生产QTY],0) as [生产数量]
这段语句应该加在哪里
追答select A.* ,B.[生产QTY], A.[订单QTY]-B.[生产QTY] as [未安排数量] from A
left join B on A.[订单号]=B.[订单号] and A.[物料编码]=B.[物料编码] and A.[物料描述]=B.[物料描述] and A.[印字]=B.[印字]
你觉得这句语句中加在哪里合适?
还想请教你一个问题,就是除了左联和右联,还有其他连接吗
我对那语句不懂也,只是知道达不到那个相等的条件,生产数量就要为0
追答inner join left join right join cross join full join, 有的access不支持, 详情可以百度
A不懂还是B不懂,还是A left join B不懂?
像我这个表,可能出现一种情况,就是B表有的,A表可能没有,A表有的, B表可能没有。请问这该用哪种连接
追答从需求上讲, 你的流程应该以一个为基础,要么以订单为基础去找生产,要么以生产去找定单. 从现实里任何一个流程的需求都有一个起点才合理
从技术上讲, full join符合你的需求,但是MS_SQL支持full join,access不支持,需要用复杂一点的语法去实现full join, 先左联,然后右联,再用 union 去除重复记录,最后得到的查询结果就是full join
谢谢呵……