FOR ALL ENTRIES IN 与 INNER JOIN 内表

1、区别

FOR ALL ENTRIES IN 与 INNER JOIN 内表,目的都是通过内表找数据库表与之对应的数据,但是有区别。

1.1、写法

FOR ALL ENTRIES IN

"--------------------@斌将军--------------------  
IF gt_acd IS NOT INITIAL.
  SELECT
    acdoca~rldnr,"总账会计中的分类账
    acdoca~rbukrs,"公司代码
    acdoca~gjahr,"会计年度
    acdoca~belnr,"会计凭证号码
    acdoca~docln"分类账 6 字符过账项目
  FROM acdoca
  FOR ALL ENTRIES IN @gt_acd
  WHERE acdoca~gjahr = @gt_acd-gjahr AND acdoca~docln = @gt_acd-docln
  INTO TABLE @DATA(lt_data2).
ENDIF.
"--------------------@斌将军--------------------

INNER JOIN 内表

"--------------------@斌将军--------------------
  SELECT
    acdoca~rldnr,"总账会计中的分类账
    acdoca~rbukrs,"公司代码
    acdoca~gjahr,"会计年度
    acdoca~belnr,"会计凭证号码
    acdoca~docln"分类账 6 字符过账项目
  FROM acdoca
  INNER JOIN @gt_acd AS acd ON acdoca~gjahr = acd~gjahr AND acdoca~docln = acd~docln
  INTO TABLE @DATA(lt_data)."赋值放在最后一行
"--------------------@斌将军--------------------

1.2、用法

FOR ALL ENTRIES IN:不能使用聚合函数;关联字段的类型和长度必须一致;内表为空,则全表查询;

INNER JOIN:可以使用聚合函数;关联的字段类型长度可以不一致;内表为空,查询无果;

1.3、去重

现有数据如下:

查询内表:

内表为两条相同的物料号,作为查询条件

"--------------------@斌将军--------------------
ls_marc-matnr = '000000000000001000'.
APPEND ls_marc TO lt_marc.
ls_marc-matnr = '000000000000001000'.
APPEND ls_marc TO lt_marc.
"--------------------@斌将军--------------------

FOR ALL ENTRIES IN:会根据查询的字段,将最终结果去重

INNER JOIN 内表:相同的查询条件,会将数据全部查出

所以使用INNER JOIN 内表需要做去重,可以通过两种办法:

去重方法一:DISTINCT查询去重

在去重方面,FOR ALL ENTRIES IN 等价于 INNER JOIN 内表+DISTINCT,当查询的字段不是所有关键字时,会出现数据丢失的情况

去重方法二:查询条件去重再查询

去掉重复的查询条件,然后再查询数据库表

"--------------------@斌将军--------------------
SORT lt_marc BY matnr.
DELETE ADJACENT DUPLICATES FROM lt_marc COMPARING matnr.
"--------------------@斌将军--------------------

结果不重复

且查询的字段不是所有关键字时,数据仍然不会丢失

1.4、效率

用4万行数据的内表,作为查询条件,测试新老语法,并使用唯一键的排序表与新语法相结合

"--------------------@斌将军--------------------
TYPES:BEGIN OF ty_acd,
        gjahr TYPE acdoca-gjahr,
        docln TYPE acdoca-docln,
        rbukrs TYPE acdoca-rbukrs,
      END OF ty_acd.

DATA:lt_acd_sort TYPE SORTED TABLE OF ty_acd WITH UNIQUE KEY gjahr docln.

...

GET TIME STAMP FIELD lv_current1.
  MOVE-CORRESPONDING gt_acd TO lt_acd_sort.
  SELECT
    acdoca~rldnr,"总账会计中的分类账
    acdoca~rbukrs,"公司代码
    acdoca~gjahr,"会计年度
    acdoca~belnr,"会计凭证号码
    acdoca~docln"分类账 6 字符过账项目
  FROM acdoca
  INNER JOIN @lt_acd_sort AS acd ON acdoca~gjahr = acd~gjahr AND acdoca~docln = acd~docln
  INTO TABLE @DATA(lt_data4).
  GET TIME STAMP FIELD lv_current2.
"--------------------@斌将军--------------------

 结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/6720.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年最全前端React18面试题考点

目录 目录 React18 特点 声明式编码 单向数据流 组件化 虚拟DOM(Virtual Dom)(同Vue) Diff算法(同Vue) 组件属性 props state refs 总结 受控组件和非受控组件 事件event 事件处理的几种方…

HarmonyOS/OpenHarmony应用开发-Stage模型ArkTS语言AbilityConstant

AbilityConstant提供启动参数的接口的能力,包括设置初次开始原因的类型、上次退出原因的类型、继续结果的类型。 说明: 模块首批接口从API version 9 开始支持。模块接口仅可在Stage模型下使用。 导入模块: import AbilityConstant from ohos.app.ability.Ability…

保姆式教学-实现天空盒旋转

目录 一、天空盒材质设置 1)在菜单栏window->Rendering->lighting 2)设置天空盒子材质,替换默认材质 3)认识Rotation变量 二、代码实现让天空盒转起来 在一个小Unity项目中,需要将天空盒旋转,以…

ShellBrowser .NET Components released

ShellBrowser .NET Components released ShellBrowser.NET组件是一组UI控件,其外观和行为与Microsoft Windows资源管理器完全相同,包括文件预览和地址栏。您可以使用它们在应用程序中集成资源管理器组件,甚至可以构建自己的资源管理器。模仿熟…

【数据结构】七种常见的排序

目录 1、排序的概念即运用 1.1、排序的概念 1.2、常见排序算法的分类 2、插入排序 2.1、排序原理 2.2、直接插入排序 2.3、希尔排序(缩小增量排序) 3、选择排序 3.1、直接选择排序 3.2、堆排序 4、选择排序 4.1、冒泡排序 4.2、快速排序 …

【Redis学习】Redis管道

理论简介 问题由来 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。 服务端处理命令,并将结果返回给客户端。 上述两步称为:Round Trip Time(简称RTT,数据包往返…

Leetcode.112 路径总和

题目链接 Leetcode.112 路径总和 easy 题目描述 给你二叉树的根节点 root和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则&#xf…

什么是编码和解码

编码和解码概念 编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。解码&#x…

GC 日志

垃圾回收器的发展历史 1999年:随JDK1.3.1一起来的串行方式Serial GC(第一款GC),ParNew GC是SerialGC的多线程版本。 2002年:2月26日,Parallel GC和Concurrent Mark Sweep GC(即CMS)跟…

【面试】MySQL面试题

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?MySql, Oracle,Sql Service的区别数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据库经常使用的函数数据类…

分布式事务·入门与解决·壹

文章目录1 基础理论1.1 本地事务1.2.分布式事务1.3 CAP定理2.2 CAP的一种解决思想——BASE理论2.3.分布式事务解决思路AP、CP、TC2 分布式事务的一种解决方案——Seata2.1 Seata的架构2.2 部署TC服务2.3.微服务集成Seata2.3.1.引入依赖2.3.2 配置TC地址2.3.3 微服务如何根据配置…

【UML建模】用例图(Use Case Diagram)

文章目录1.概述2.用例图的组成2.1.基本组成2.2.用例之间的关系2.2.1.包含关系2.2.2.拓展关系2.2.3.泛化关系2.2.4.综合图形2.3.用例说明2.3.1.扩展点2.3.2.注释3.总结1.概述 用例图(Use Case Diagram)是UML建模中最重要并且最常用的一种图形&#xff0c…

【AUTOSAR】【Lin通信】LinIf

目录 一、概述 1.1 架构 1.2 功能 二、限制说明 三、功能说明 3.1 帧传输 3.1.1 帧类型 3.1.2 帧接收 3.1.3 帧发送 3.2 调度 3.3 主函数 3.4 网络管理 3.4.1 节点管理 3.4.2 进入睡眠过程 3.4.3 唤醒过程 3.5 错误分类 3.5.1 开发错误 3.5.2 运行时错误 四…

【OpenCV-Python】cvui 之 复选框

CVUI 之 复选框 Python import numpy as np import cv2 import cvuidef checkbox_test():WINDOW_NAME Checkbox-Testchecked [False]# 创建画布frame np.zeros((300, 400, 3), np.uint8)# 初始化窗口cvui.init(WINDOW_NAME)while True:# 画布填色frame[:] (100, 200, 100…

浪潮信息:2025年,实现数据中心风冷、液冷同价

算力作为一种重要的生产力,俨然成为数字经济发展的关键驱动力。而数据中心作为算力的最重要的“输出方”,其作用不言而喻。特别是近来人工智能大模型相关产业的发展,对算力的需求呈指数级增长。大力发展数据中心、提升算力,成为经…

vue中 使用假的进度条数字插件:fake-progress

1.安装插件 npm install fake-progress 2.页面引用 在js中引用:import Fakeprogress from fake-progress 3.定义 data() {return {fake: new Fakeprogress({timeConstant: 60000}),} } 4.使用 在需要开始的地方使用:this.fake.start(); 然后在需…

QT完善登录界面Ⅱ

功能添加: 1.弹窗提示 2.页面跳转 信号的发送,槽函数执行 form.hpublic slots:void mySlot(); //槽函数widget.h signals:void mySignal(QString e); //自定义属于自己的信号函数//widget.cpp #include "widget.h" #include "ui_widge…

转行大数据未来发展怎么样?可行么

近年来越来越多的人选择大数据行业,大数据行业前景不错薪资待遇好,各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广,不管是科技领域还是食品产业,零售业等都是需要大数据人才进行大数据的处理,以提供更好…

OSPF的选路原则,重发布与RIP

OSPF的选路原则 域内路由 --- 1类,2类LSA 域间路由 --- 3类LSA 域外路由 --- 5类,7类LSA --- 类型1,类型2 1,域内路由如果都是通过1类和2类LSA学习到的域内路由信息,则将直接比较开销值,开销值小的&#xf…

热门商业模式——分享购,整合流量与资源,实现生态布局

今天我们来聊一聊热门商业模式——分享购。 分享购是什么? 是一个以创新的商业模式整合流量与资源,实现整个生态布局的应用。结合了CPS资源、商城、礼包、异业联盟/O2O等应用,可实现“消费分享”的新型聚合生态模式。 分享购模式结合平台自…
最新文章