2016-06-23 7 views
7

JOINの選択カラムを単純化する方法がABAPのOpenSQLにありますか?一方のテーブルのすべてのフィールドを取得したいが、 s)?例えばテーブルAのすべてのフィールドを選択するが、テーブルBのフィールドを選択する

は、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

はい、これは7.40 SP08のOpenSQLで可能です。これはarticleを参照してください。

記事の引用には、次のようなものがあります。

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). 

残念ながら1列ずつを指定するか、ADBCと、例えばデータベースのネイティブSQLを使用しなければなりません。

+2

ハ、私はすでにこれを以前使用していたと思いました。この特定のシステムが7.40 SP06にあることが分かります。 – Lilienthal

+2

うん、痛みを知っている。私は同じシステムバージョン7.40 SP06を使用しています。 :) – Jagger

関連する問題