#abap #opensql
Вопрос:
Я недавно изучал abap и работал над отдельными операциями, но затем я столкнулся с этим вопросом. Как я могу поместить эти 2 оператора select в один оператор select?
SELECT * FROM SPFLI INTO SPFLI_WA.
SELECT * FROM SFLIGHT INTO SFLIGHT_WA
WHERE CARRID = SPFLI_WA-CARRID
AND CONNID = SPFLI_WA-CONNID.
ENDSELECT.
ENDSELECT.
Комментарии:
1. На самом деле вы бы создали представление компакт-дисков с ассоциациями сверху, а затем создали представление компакт-дисков сверху, которое содержит нужные вам поля. В ABAP редко можно было бы выполнить такое объединение вручную.
Ответ №1:
Вы можете использовать внутреннее объединение для получения соответствующих записей из другой таблицы.
SELECT SFLIGHT~*
INTO @SFLIGHT_WA
FROM SFLIGHT
INNER JOIN SPFLI ON SFLIGHT~CARRID = SPFLI~CARRID
AND SFLIGHT~CONNID = SPFLI~CONNID.
ENDSELECT.
Ответ №2:
Вот расширение правильного ответа от mkysoft, просто для удовольствия, чтобы точно имитировать исходный код ; он работает с ABAP 7.40:
SELECT *
INTO @DATA(spfli_sflight_wa)
FROM spfli
INNER JOIN sflight ON sflight~carrid = spfli~carrid
AND sflight~connid = spfli~connid.
DATA(spfli_wa) = spfli_sflight_wa-spfli.
DATA(sflight_wa) = spfli_sflight_wa-sflight.
...
ENDSELECT.
Комментарии:
1. Технически говоря, это действительно должно быть ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ. Хороший трюк с получением разных рабочих областей.