天天看點

SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

 💬個人網站:【芒果個人日志】​​​​​​

💬原文位址:SAP ABAP——OPEN SQL(四)【FROM】 - 芒果個人日志 (wyz-math.cn)

💂作者簡介: THUNDER王,一名熱愛财稅和SAP ABAP程式設計以及熱愛分享的部落客。目前于江西師範大學會計學專業大二大學在讀,同時任漢碩雲(廣東)科技有限公司ABAP開發顧問。在學習工作中,我通常使用偏後端的開發語言ABAP,SQL進行任務的完成,對SAP企業管理系統,SAP ABAP開發和資料庫具有較深入的研究。

💅文章概要:本文主要介紹一下SAP ABAP中OPEN SQL的FROM語句

🤟每日一言:當你知道你不在是你的時候,你才是真正的你! 9、充沛的精力加上頑強的決心,曾經創造出許多奇迹。

目錄

FROM語句選項

FROM中選擇表

- 選擇靜态表

- 選擇動态表(在頁面動态地輸入資料庫表sflight查詢到相關的資料)

JOIN語句

- INNER JOIN

- LEFT OUTER JOIN

FROM語句選項

語句 說明
CLIENT SPECIFIED 解除自動client設定
BYPASSING BUFFER 不會從SAP本地緩沖器中讀取資料
UP TO n ROWS 限制查詢的個數

FROM中選擇表

- 選擇靜态表

SELECT ... FROM <dtba> [AS <alias>] WHERE <condition>
           

- 選擇動态表(在頁面動态地輸入資料庫表sflight查詢到相關的資料)

案例示範代碼:

DATA:GS_SFLIGHT TYPE SFLIGHT.
PARAMETERS P_SF TYPE CHAR20.

SELECT * FROM (P_SF) INTO GS_SFLIGHT UP TO 1 ROWS.
 WRITE:GS_SFLIGHT-CARRID, GS_SFLIGHT-CONNID.
ENDSELECT.
           
SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

動态表

SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

查詢效果

JOIN語句

JOIN語句是ABAP OPEN SQL中用來在查詢多個表中資料時使用的一種文法,能夠将多個資料庫表進行連接配接查詢(其中JOIN語句還細化分為了INNER JOIN 和 OUTER JOIN 其中若不指定OUTER JOIN 則JOIN預設為INNER JOIN),其中JOIN語句的基本文法如下:

SELECT...FROM <dbta1> [AS <alias>] [INNER][LEFT OUTER] JOIN <dbta2> [AS <alias>] ON <condition> [WHERE <condition>] [UP TO n ROWS]
           

- INNER JOIN

INNER JOIN為内連接配接,用于查詢兩個表中相同的資料,其中案例代碼及效果如下:

DATA:BEGIN OF GS_SFLIGHT,
  ZCARRID LIKE SFLIGHT-CARRID,
  ZCARRNAME LIKE SCARR-CARRNAME,
 END OF GS_SFLIGHT.

  SELECT a~CARRID b~CARRNAME INTO GS_SFLIGHT FROM SFLIGHT AS a INNER JOIN SCARR AS b ON a~CARRID = 
   b~CARRID UP TO 1 ROWS
   WHERE a~CARRID = 'AC' .
   WRITE:/ GS_SFLIGHT-ZCARRID,GS_SFLIGHT-ZCARRNAME.
  ENDSELECT.
           

可以看到結果顯示傳回了兩個表中相同的資料!并且UP TO 1 ROWS限制了傳回的結果行數!

SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

案例效果

SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

SCARR資料庫表

SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

SFLIGHT資料庫表

- LEFT OUTER JOIN

LEFT OUTER JOIN為左外連接配接(ABAP OPEN SQL中目前隻支援左外連接配接),此語句以左邊基本表作為基準表讀取資料(能夠傳回左邊表擁有但右邊表沒有的資料)其中案例代碼及效果如下:

DATA:BEGIN OF GS_SFLIGHT,
   ZCARRID LIKE SFLIGHT-CARRID,
   ZCURRCODE LIKE SCARR-CURRCODE,
   END OF GS_SFLIGHT.

   SELECT a~CARRID b~CURRCODE INTO GS_SFLIGHT FROM SFLIGHT AS a LEFT OUTER JOIN SCARR AS b ON 
   a~CARRID = b~CARRID .
   WRITE:/ GS_SFLIGHT-ZCARRID,GS_SFLIGHT-ZCURRCODE.
   ENDSELECT.
           

可以看到結果顯示傳回了左邊表中擁有但是右邊表中不具有的資料(SFLIGHT中具有CARRID為SQ的資料,但是SCARR中不具有CARRID為SQ的資料)!

SAP ABAP——OPEN SQL(四)【FROM】FROM語句選項FROM中選擇表JOIN語句

左外連接配接效果