2016-06-23 36 views
7

Czy istnieje sposób w OpenSQL ABAP, aby uprościć wybrane kolumny w JOIN, gdy chcę pobrać wszystkie pola z jednej tabeli, ale tylko wybrane pola z drugiej tabeli (s)?Zaznaczając wszystkie pola tabeli A, ale wybierz pola tabeli B

Na przykład, w mysql we can simply do:

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

Jednak OpenSQL nie wydaje się, aby umożliwić wybranie tb1~*, tb2~b, tb2~d więc muszę uciekać się do tego:

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

Dla bardzo dużych tabel, zwłaszcza norma tabele stają się niewygodne, trudne do odczytania i bardziej irytujące w utrzymaniu.

Czy istnieje lepszy sposób wyboru wszystkich pól tb1 i niektórych pól z tb2?

Odpowiedz

7

Tak, jest to możliwe w OpenSQL od wersji 7.40 SP08. Zobacz tę article.

Cytat z artykułu ma to.

Specyfikacja Kolumna

Na liście SELECT, można określić wszystkie kolumny źródła danych za pomocą DATA_SOURCE składni ~ * od 7.40, SP08 dalej. Może to być przydatne podczas pracy z łączeniami.

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

W poprzednich wersjach niestety trzeba określić kolumny pojedynczo lub wykorzystanie bazy danych SQL dla rodzimej przykład ADBC.

+2

Ha, myślałem, że już wcześniej tego użyłem. Okazuje się, że ten konkretny system działa na 7.40 SP06. – Lilienthal

+2

Tak, znasz ból. Jestem na tej samej wersji systemu 7.40 SP06. :) – Jagger