💬個人網站:【芒果個人日志】
💬原文位址: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.
動态表
查詢效果
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限制了傳回的結果行數!
案例效果
SCARR資料庫表
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的資料)!
左外連接配接效果