10

JOIN当我想获取一个表的所有字段但只从另一个表中选择字段时,ABAP 的 OpenSQL 中是否有一种方法可以简化选择列?

例如,在 mysql 中,我们可以简单地做

SELECT  tb1.*, tb2.b, tb2.d
FROM       tableA tb1
INNER JOIN tableB tb2 ON tb1.x = tb2.a

但是,OpenSQL 似乎不允许选择tb1~*, tb2~b, tb2~d,所以我不得不求助于这个:

SELECT  tb1.x, tb1.y, tb1.z, tb2.b, tb2.d
FROM       tableA tb1
INNER JOIN tableB tb2 ON tb1.x = tb2.a

对于非常大的表,尤其是标准表,这变得笨拙、难以阅读并且维护起来更烦人。

有没有更好的方法来选择 tb1 的所有字段和 tb2 中的一些字段?

4

1 回答 1

9

是的,这在 7.40 SP08 的 OpenSQL 中是可能的。见这篇文章

文章的引文就是这样。

色谱柱规格

在 SELECT 列表中,您可以使用从 7.40、SP08 开始的语法 data_source~* 指定数据源的所有列。这在使用连接时会很方便。

SELECT scarr~carrname, spfli~*, scarr~url
       FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
       INTO TABLE @DATA(result).

不幸的是,在以前的版本中,必须一一指定列或使用数据库原生 SQL,例如ADBC

于 2016-06-23T11:21:00.353 回答