abap - 从表A中选择所有字段,但从表B中选择单个字段?

标签 abap opensql

当我想获取一个表的所有字段但仅从其他表中选择的字段时,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/

相关文章:

abap - 将内联声明表分配给字段符号

oop - 方法调用作为另一个方法调用的参数?

abap - 在字符串中存储日期算术结果

abap - 如何在ABAP中检索层次结构的所有子节点?

select - ABAP 7.40 SELECT .. ENDSELECT UP TO n ROWS 语法?

subquery - 选择多个字段不在子查询中的位置(不包括连接)

abap - 手动设置 SELECT-OPTIONS?

pdf - 语言为 PL(波兰语)时的大 PDF 文件

search - 我可以以编程方式调用搜索帮助,其中一些参数已经填写且不可编辑吗?

sql - 根据 ABAP Open SQL 中的列值仅从数据库表中选择一行