2016-06-23 23 views
7

C'è un modo in OpenSQL di ABAP per semplificare le colonne selezionate in un JOIN quando voglio prendere tutti i campi di una tabella ma solo i campi selezionati dall'altra tabella (S)?Selezione di tutti i campi della tabella A ma selezionare i campi della tabella B

Per esempio, in MySQL we can simply do:

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

Tuttavia, OpenSQL non sembra consentire la selezione tb1~*, tb2~b, tb2~d quindi devo ricorrere a questo:

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

Per tabelle molto grandi, soprattutto di serie tavoli, questo diventa poco maneggevole, difficile da leggere e più fastidioso da mantenere.

C'è un modo migliore per selezionare tutti i campi di tb1 e alcuni campi da tb2?

risposta

7

Sì, questo è possibile in OpenSQL da 7.40 SP08. Vedi questo article.

La citazione dall'articolo è quella.

Colonna Specification

Nell'elenco SELECT, è possibile specificare tutte le colonne di una fonte di dati utilizzando la sintassi data_source ~ * da 7,40, SP08 via. Questo può essere utile quando si lavora con i join.

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

Nelle versioni precedenti, purtroppo, si deve specificare le colonne uno per uno o database di utilizzare SQL nativo per esempio con ADBC.

+2

Ha, ho pensato che l'avevo già usato prima. Risulta che questo particolare sistema è su 7.40 SP06. – Lilienthal

+2

Sì, conosci il dolore. Sono sulla stessa versione di sistema 7.40 SP06. :) – Jagger

Problemi correlati