Office中国论坛/Access中国论坛

标题: 如何进行2表之间全面的对比 [打印本页]

作者: arvinwill    时间: 2016-1-6 23:51
标题: 如何进行2表之间全面的对比
有2表,一库存表,一盘点表,2表字段(货品编码,数量),属性、格式都相同,现在需要对2表进行对比,问题在于,在实际盘点的过程中,有的时候是库存表货品有数量,但实际盘点表没有,有的时候是盘点表上有数量,但库存表上没有,在这种情况下,如何将2表数量都全部显示出来?我试了内连接,左连接,右连接,都不对。请教,这个如何做?
作者: arvinwill    时间: 2016-1-7 01:03
库存货品        库存数量        盘点数量
651023          12                11
652219          11                13
654109          7                0
638876          3                0
663210          0                1
562980          0                1

希望达到这样的效果。
作者: xinrenq    时间: 2016-1-7 08:25
Select A.货品编码,库存表.数量 as 库存量,盘点表.数量 as 盘点量 From
((Select 库存表.货品编码 From 库存表  
union
Select 盘点表.货品编码 From 盘点表) as A
Left join 库存表 On A.货品编码=库存表.货品编码)  
Left join 盘点表 On A.货品编码=盘点表.货品编码;
作者: roych    时间: 2016-1-7 09:20
又是一个懒人。。。。搜索下 “表 比较”就可以看到了:
http://www.office-cn.net/thread-93141-1-1.html
作者: arvinwill    时间: 2016-1-7 12:27
roych 发表于 2016-1-7 09:20
又是一个懒人。。。。搜索下 “表 比较”就可以看到了:
http://www.office-cn.net/thread-93141-1-1.html

恕我直言,您根本没看清我的问题。您推荐的这个东西也不能用,操作复杂,而且数据量一大就出问题,更讨厌的是,它压根没法找出只存在于其中一表的数据。不过还是谢谢您。
作者: roych    时间: 2016-1-7 14:02
不就是全联接么?
先左联接再联合右联接就好了。
  1. select *
  2. from a left join b on a.id=b.id
  3. union all
  4. select *
  5. from a right join b on a.id=b.id
  6. where a.id is null
复制代码

作者: arvinwill    时间: 2016-1-7 14:14
roych 发表于 2016-1-7 14:02
不就是全联接么?
先左联接再联合右联接就好了。

再次感谢您的回复,不过请问您真的看明白别人需要什么了么?请您仔细看看并检验一次您自己的代码。
作者: roych    时间: 2016-1-7 16:14
arvinwill 发表于 2016-1-7 14:14
再次感谢您的回复,不过请问您真的看明白别人需要什么了么?请您仔细看看并检验一次您自己的代码。

左表:
ID 字段1
1     A
2     B
3     C
右表
ID 字段1
3    C
4    D
5    E
全联接结果:
ID 字段1
1     A
2     B
3     C
4     D
5     E
你的表里不一定有ID,但应该总有一些共有的字段。如果仍然不清楚什么叫全联接,麻烦自行百度下。尽管Access里没有全联接(Full Join),但不代表做不出全联接的效果。
看不懂SQL语句,我们不怪你。问题是,你有动手去试过了吗?
作者: arvinwill    时间: 2016-1-7 16:48
roych 发表于 2016-1-7 16:14
左表:
ID 字段1
1     A

既然您这么有自信,那么请把我被你删除的帖子里的access数据库,用您上面的代码来做一边,看能不能出现您自信满满认为能满足我要的那种效果?
附件我已放上来,需求我在下面再强调一遍,而且是用再通俗不过的语言,相信不管懂不懂sql的人都能看明白。
如果不行,还是那句话,先别居高临下,请先看清楚别人需要什么,好吗?谢谢。

===============================================================================

数据库在附件。
        说明:
1、库存表中有的货品编码有数量,而同样的货品编码在盘点表中可能数量为0;
2、盘点表中有的货品编码有数量,而同样的货品编码在库存表中可能数量为0;
3、库存表中存在盘点表中没有的货品编码;
4、盘点表中存在库存表中没有的货品编码;
5、今后在库存表和盘点表里新增的数据,依然可能出现以上4种情况;
5、希望能达到附件数据库中 “2表对比后希望出现的界面” 那样的效果,即:货品编码不管是哪个表里的,都在左边,货品编码不重复行,并且库存数量显示一列,盘点数量显示一列;
        烦请高手帮忙解决,在此先谢过。





作者: roych    时间: 2016-1-7 17:42
不就这个样子么?你觉得版主都是灌水灌出来的么?[attach]57801[/attach]
[attach]57800[/attach]
如果说有什么差异,顶多就少了你的自动编号字段和排序对不上。




作者: arvinwill    时间: 2016-1-7 17:45
请问,这是用您上面6楼所告诉我们的代码做出来的么?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3