问题描述
DearAll,目前开发有遇到这么一个需求,A表和B表都有栈位和物料两个栏位,现在有需求将A,B两表中相同栈位中不同的物料提取出来,比如对于栈位A1,A有物料,B没有物料,则显示为A1A物料空,若栈位A2,A无物料,B有物料,则显示为A2空B物料,若A3栈位,A有物料且B也有物料,但是两物料不相同,则显示为A3A物料B物料,形如下图目前我的想法是先分别去除A表和B表的所有明细,并且建一张表读取出两个表中所有的栈位信息,再逐行数据进行比对,但是感觉效率很低不知各位有什么好算法,能否给点参考意见呢,先谢过各位了
解决方案
解决方案二:
先排序,再比较,这样只要遍历一次。
解决方案三:
我觉得这个问题数据库处理更方便。fulljoinon栈位。然后外面套多层,用where过滤a=b部分。
解决方案四:
引用2楼smthgdin的回复:
我觉得这个问题数据库处理更方便。fulljoinon栈位。然后外面套多层,用where过滤a=b部分。
+1不用套多层,直接联合查询a,bwherea.栈位=b.栈位anda.单据A!=b.单据B
解决方案五:
引用3楼Z65443344的回复:
Quote: 引用2楼smthgdin的回复:
我觉得这个问题数据库处理更方便。fulljoinon栈位。然后外面套多层,用where过滤a=b部分。+1不用套多层,直接联合查询a,bwherea.栈位=b.栈位anda.单据A!=b.单据B
但是还有两种情况,A有栈位B没栈位,B有栈位,A没栈位的啊,这个语句就没法筛选了
解决方案六:
引用4楼SanitySun的回复:
Quote: 引用3楼Z65443344的回复:
Quote: 引用2楼smthgdin的回复:
我觉得这个问题数据库处理更方便。fulljoinon栈位。然后外面套多层,用where过滤a=b部分。+1不用套多层,直接联合查询a,bwherea.栈位=b.栈位anda.单据A!=b.单据B
但是还有两种情况,A有栈位B没栈位,B有栈位,A没栈位的啊,这个语句就没法筛选了
(+)a.栈位=(+)b.栈位应该就可以了吧
解决方案七:
引用5楼Z65443344的回复:
Quote: 引用4楼SanitySun的回复:
Quote: 引用3楼Z65443344的回复:
Quote: 引用2楼smthgdin的回复:
我觉得这个问题数据库处理更方便。fulljoinon栈位。然后外面套多层,用where过滤a=b部分。+1不用套多层,直接联合查询a,bwherea.栈位=b.栈位anda.单据A!=b.单据B
但是还有两种情况,A有栈位B没栈位,B有栈位,A没栈位的啊,这个语句就没法筛选了
(+)a.栈位=(+)b.栈位应该就可以了吧
加了a.栈位=(+)b.栈位的话,应该是只能筛选出A和B都有的栈位信息,但是A有B无,A无B有的应该还是选不出来吧
解决方案八:
引用6楼SanitySun的回复:
Quote: 引用5楼Z65443344的回复:
加了a.栈位=(+)b.栈位的话,应该是只能筛选出A和B都有的栈位信息,但是A有B无,A无B有的应该还是选不出来吧能选出来啊,否则加号加了跟没加有任何区别?
时间: 2024-09-29 21:12:01