ABAP下的open SQL中的join (inner join , left outer join,right outer join,all entries in )

本文深入解析了SQL中的Inner Join、Left Join和Right Join等连接方式,通过实例详细展示了如何进行多表连接查询,包括连接条件的设定及结果集的获取。同时,介绍了使用For All Entries In进行数据检索的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 背景

多个表连接查询,可以通过视图(这个查询经常用就有可能要用它)和join(一次性查询就用它)来做查询;下以主要是以join例子来说明!
Join是对多个数据库表的操作,写本文主要是对这三种连接方式的一个区别和总结。
数据库表连接需要有三点
1.连接哪些表;
2.连接条件;
3.连接哪些列;
连接条件用on来表示。
以下是T1表(左边表)
在这里插入图片描述
以下是T2表(右边表)
在这里插入图片描述

二 Inner join的用法

实际上就是两张表FILED1字段相等的等式连接,查询公共部分出来。

TYPES: BEGIN OF TY_ITEM ,
    FILED1 TYPE ZJGL1-FILED1,
    FILED2 TYPE ZJGL1-FILED2,
    FILED3 TYPE ZJGL2-FILED3,
    END OF TY_ITEM .
data item type STANDARD TABLE OF TY_ITEM.

SELECT T1~FILED1 T1~FILED2 T2~FILED3
FROM ZJGL1 AS t1
INNER JOIN ZJGL2 as T2 ON ( T1~FILED1 = T2~FILED1 )
INTO CORRESPONDING FIELDS OF TABLE item.
BREAK-POINT.

效果如下
在这里插入图片描述

三 left join (以左边的表为准取数,再来内连接 )

代码

TYPES: BEGIN OF TY_ITEM ,
    FILED1 TYPE ZJGL1-FILED1,
    FILED2 TYPE ZJGL1-FILED2,
    FILED3 TYPE ZJGL2-FILED3,
    END OF TY_ITEM .
data item type STANDARD TABLE OF TY_ITEM.

SELECT T1~FILED1 T1~FILED2 T2~FILED3
FROM ZJGL1 AS t1
LEFT OUTER JOIN ZJGL2 as T2 ON ( T1~FILED1 = T2~FILED1 )
INTO CORRESPONDING FIELDS OF TABLE item.
BREAK-POINT.

效果如下
在这里插入图片描述

四 right join(以右边的表为准取数,再来内连接)
TYPES: BEGIN OF TY_ITEM ,
    FILED1 TYPE ZJGL1-FILED1,
    FILED2 TYPE ZJGL1-FILED2,
    FILED3 TYPE ZJGL2-FILED3,
    END OF TY_ITEM .
data item type STANDARD TABLE OF TY_ITEM.

SELECT T2~FILED1 , T1~FILED2 ,T2~FILED3
FROM ZJGL1 AS t1
RIGHT OUTER JOIN  ZJGL2 as T2 ON ( T1~FILED1 = T2~FILED1 )
INTO CORRESPONDING FIELDS OF TABLE @item.
BREAK-POINT.

在这里插入图片描述

五 for all entries in (以内表中某字段值为条件,从数据库中取数)

SELECT … INTO TABLE

FROM

FOR ALL ENTRIES IN
WHERE = -
AND = -.
以下就是一个例子(内表与数据库表一起取值。)

IF IT_VBAK IS NOT INITIAL.
  SELECT * FROM MAKT INTO IT_MAKT
    FOR ALL ENTRIES IN IT_VBAK
    WHERE MATNR = IT_VBAK-MATNR.
ENDIF.  
六 总结
  1. 如果join的时候,发果查询的数据太多,一定有多对多,所以出现了更多的数据.
    在这里插入图片描述
  2. When you write sql conditon. You must view it if the field is in index. If it is here. The speed is fast.
    Demo

在这里插入图片描述
在这里插入图片描述3 When you use for all entry in ,please add conditon(if interal is not initial)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值