Select table A 中的所有字段但 B 中的单个字段?

Select all fields from table A but single field from B?

当我想获取一个 table 的所有字段但只获取 select 时,ABAP 的 OpenSQL 中是否有一种方法可以简化 JOIN 中的 select 列从其他 table(s)?

编辑字段

例如,在mysql we can simply do:

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

但是,OpenSQL 似乎不允许 selecting 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

对于非常大的 tables,尤其是标准的 tables,这变得笨拙、难以阅读并且更令人讨厌维护。

有没有更好的方法select tb1的所有字段和tb2的部分字段?

是的,这在 7.40 SP08 的 OpenSQL 中是可能的。看到这个 article.

文章中的引文有。

列规范

In the SELECT list, you can specify all columns of a data source using the syntax data_source~* from 7.40, SP08 on. This can be handy when working with joins.

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

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