选择表A的所有字段但选择表B的字段

时间:2016-06-23 11:10:51

标签: abap opensql

当我想获取一个表的所有字段但只读取其他表中的选定字段时,ABAP的OpenSQL中有没有办法简化JOIN中的选择列? / p>

例如,在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中的某些字段?

1 个答案:

答案 0 :(得分:9)

是的,这可以在7.40 SP08的OpenSQL中实现。请参阅此article

文章引用了这一点。

列规范

  

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

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

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