Inner Join, Left Outer Join和Association的区别

Posted JerryWangSAP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Inner Join, Left Outer Join和Association的区别相关的知识,希望对你有一定的参考价值。

测试用的CDS视图的源代码,第8行用Inner Join连接TJ02T, 后者存放了所有系统状态的ID和描述。

技术分享图片

Inner Join测试结果:对于那些在TJ02T里没有维护描述信息的状态,它们不会出现在结果集里。

技术分享图片

把第八行的Inner Join改成Outer Join,测试结果相反:注意观察下图stat列值为E0001的行项目也出现在了结果集里。

技术分享图片

Association的测试结果同Left Outer Join一致。

技术分享图片

Association的底层实现实际上和Left Outer Join一致。有两种办法来验证这个结论。

方法1

在ABAP Development Studio里预览一个含有association实现的CDS view,能够在工具里发现该association最后是通过Left Outer Join实现的。

技术分享图片

方法2

事务码ST05里的这个按钮: 显示执行计划,也能显示出association底层是由Left Outer Join实现的。

技术分享图片

技术分享图片

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
技术分享图片

技术分享图片


以上是关于Inner Join, Left Outer Join和Association的区别的主要内容,如果未能解决你的问题,请参考以下文章

SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)

Inner Join, Left Outer Join和Association的区别

CROSS JOIN和INNER JOIN,LEFT JOIN,RIGHT JOIN,OUTER JOIN之间的区别[重复]

SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)

SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)

LEFT OUTER JOIN with 'field IS NULL' in WHERE 用作 INNER JOIN