当我想获取一个表的所有字段但仅从其他表中选择的字段时,ABAP的OpenSQL中有没有一种方法可以简化JOIN
中的选择列?
例如,在mysql we can simply do中:
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的某些字段?
最佳答案
是的,这在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).
不幸的是,在以前的版本中,必须一一指定列或使用数据库 native SQL,例如ADBC。
关于abap - 从表A中选择所有字段,但从表B中选择单个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37989945/