728x90
๋ฐ์ํ
์ฐจ์ด์ ์ ๋ฆฌ
ํน์ง | JOIN | FOR ALL ENTRIES |
์ํ ์์น | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ | ABAP ์๋ฒ |
์ฌ์ฉ ์ฉ๋ | ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ์ฌ ์กฐํ | ์ธํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํ |
์ฑ๋ฅ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์ ์ต์ ํ๋๋ฏ๋ก, ์ ์ค๊ณ๋ ์ธ๋ฑ์ค์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๊ณ ์ฑ๋ฅ์ ๋ฐํ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๋ฅผ ์ค์ผ ์ ์์ผ๋, ์ธํฐ๋ ํ ์ด๋ธ์ด ํฌ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ |
๋ณต์กํ ์กฐ๊ฑด ์ฒ๋ฆฌ | ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ๋ณต์กํ ๊ด๊ณ์ ์กฐ๊ฑด์ ์ฒ๋ฆฌ ๊ฐ๋ฅ | ๋ณต์กํ ์กฐ์ธ๋ณด๋ค๋ ์กฐ๊ฑด ๊ธฐ๋ฐ ์กฐํ์ ์ ํฉ |
์ฃผ์์ฌํญ | ์กฐ์ธ์ ์ข
๋ฅ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ (INNER JOIN, LEFT JOIN ๋ฑ) |
์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ผ๋ฉด ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋ ์ ์์ผ๋ฏ๋ก, ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ง ์์์ง ํ์ธ ํ์ |
์์ | INNER JOIN, LEFT JOIN ๋ฑ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ ์ด๋ธ์ ๊ฒฐํฉ | ์ธํฐ๋ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก FOR ALL ENTRIES ๊ตฌ๋ฌธ ์ฌ |
"๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ"์์ ์ํ๋๋ ํน์ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ์ง์ ์ฒ๋ฆฌ๋๋ ์์ ์ ์๋ฏธํฉ๋๋ค.
์ด๋ฌํ ์์ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ด ์ต์ ํ๋ ๋ฐฉ์์ผ๋ก ์ํ๋๋ฉฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์ ์ํ๋๋ ๋ช ๊ฐ์ง ํน์ ์์ ์์๋ก๋ JOIN, ์ง๊ณ์์ (COUNT) ๋ฑ์ด ์์ต๋๋ค.
JOIN ์ด๋?
JOIN์ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๊ฒฐํฉํ์ฌ ๋จ์ผ ๊ฒฐ๊ณผ ์ธํธ๋ฅผ ๋ฐํํ๋ SQL ๊ตฌ๋ฌธ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์ ์ํ๋๋ฉฐ, ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
ํน์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์ ์ํ:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ JOIN ์ฐ์ฐ์ ์ํํ๋ฏ๋ก ์๋ฒ์ ์์์ ์ฌ์ฉํฉ๋๋ค.
- ๋ณต์กํ ์กฐ๊ฑด ์ฒ๋ฆฌ ๊ธฐ๋ฅ:
- ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณต์กํ ์กฐ๊ฑด์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๊ณ ์ฑ๋ฅ:
- ์ ์ค๊ณ๋ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ๊ณ ์ฑ๋ฅ์ ๋ฐํํ ์ ์์ต๋๋ค.
- ์ ํ:
- INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN ๋ฑ์ด ์์ต๋๋ค.
์์
๋ค์์ SFLIGHT์ SCAARR ํ ์ด๋ธ์ INNER JOIN์ ์ฌ์ฉํ์ฌ ๊ฒฐํฉํ๋ ์์ ์ ๋๋ค.
* ๊ตฌ์กฐ์ฒด ํ์
์ ์
TYPES: BEGIN OF TY_RESULT,
CARRID TYPE SFLIGHT-CARRID,
CONNID TYPE SFLIGHT-CONNID,
CARRNAME TYPE SCARR-CARRNAME,
END OF TY_RESULT.
* ์ธํฐ๋ ํ
์ด๋ธ ์ ์ธ
DATA: LT_RESULTS TYPE TABLE OF TY_RESULT,
WA_RESULTS TYPE TY_RESULT.
" SFLIGHT์ SCARR ํ
์ด๋ธ์ ์กฐ์ธํ์ฌ ๋ฐ์ดํฐ ์ ํ
SELECT A~CARRID A~CONNID B~CARRNAME
INTO TABLE LT_RESULTS
FROM SFLIGHT AS A
INNER JOIN SCARR AS B ON A~CARRID = B~CARRID
WHERE A~CARRID = 'LH'.
" ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ
LOOP AT LT_RESULTS INTO WA_RESULTS.
WRITE: / WA_RESULTS-CARRID, WA_RESULTS-CONNID, WA_RESULTS-CARRNAME.
ENDLOOP.
- SFLIGHT ํ ์ด๋ธ์ carrid์ scarr ํ ์ด๋ธ์ carrid๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฐํฉํฉ๋๋ค.
- ํน์ ํญ๊ณต์ฌ ID('LH')์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
FOR ALL ENTRIES ๋?
FOR ALL ENTREIS ๋ ์ธํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก SQL SELECT ๋ฌธ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
ํน์ง
- ์ธํฐ๋ ํ
์ด๋ธ ๊ธฐ๋ฐ:
- ABAP ์ธํฐ๋ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก SQL SELECT ๋ฌธ์ ์ํํฉ๋๋ค.
- ์กฐ๊ฑด ๋ง์กฑ ๋ฐ์ดํฐ ์กฐํ:
- ์ธํฐ๋ ํ ์ด๋ธ์ ๊ฐ ํ์ ๋ํด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์ต์ํ:
- ์ฌ๋ฌ ๊ฐ์ ๋จ์ผ ์กฐ๊ฑด ์กฐํ๋ฅผ ํ๋์ ์ฟผ๋ฆฌ๋ก ํตํฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๋ฅผ ์ค์ ๋๋ค.
- ์ฃผ์์ฌํญ:
- ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ผ๋ฉด ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋ ์ ์์ผ๋ฏ๋ก, ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ง ์์์ง ํ์ธํด์ผ ํฉ๋๋ค.
์์
๋ค์์ SFLIGHT ํ ์ด๋ธ์์ ํญ๊ณต์ฌ ID๊ฐ LH์ธ ํญ๊ณตํธ ๋ฐ์ดํฐ๋ฅผ FOR ALL ENTRIES๋ฅผ ์ฌ์ฉํ์ฌ ์กฐํํ๋ ์์ ์ ๋๋ค.
* ์ธํฐ๋ ํ
์ด๋ธ ๋ฐ ์์
์์ญ ์ ์ธ
TYPES: BEGIN OF ty_carrid,
carrid TYPE sflight-carrid,
END OF ty_carrid.
DATA: lt_carrid TYPE TABLE OF ty_carrid,
lt_sflight TYPE TABLE OF sflight,
wa_sflight TYPE sflight.
" SFLIGHT ํ
์ด๋ธ์์ carrid๊ฐ 'LH'์ธ ํญ๊ณต์ฌ ID๋ฅผ ์ ํ
SELECT DISTINCT carrid
INTO TABLE lt_carrid
FROM sflight
WHERE carrid = 'LH'.
" ์ธํฐ๋ ํ
์ด๋ธ์ด ๋น์ด ์์ง ์์ ๊ฒฝ์ฐ์๋ง FOR ALL ENTRIES ์ฌ์ฉ
IF lt_carrid IS NOT INITIAL.
SELECT *
INTO TABLE lt_sflight
FROM sflight
FOR ALL ENTRIES IN lt_carrid
WHERE carrid = lt_carrid-carrid.
ELSE.
WRITE: / 'No data found in lt_carrid'.
ENDIF.
" ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ
IF lt_sflight IS NOT INITIAL.
LOOP AT lt_sflight INTO wa_sflight.
WRITE: / wa_sflight-carrid, wa_sflight-connid, wa_sflight-fldate.
ENDLOOP.
ELSE.
WRITE: / 'No data found in lt_sflight'.
ENDIF.
- lt_carrid ์ธํฐ๋ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก SFLIGHT ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
- ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ง ์์ ๊ฒฝ์ฐ์๋ง ์กฐํ๋ฅผ ์ํํฉ๋๋ค.
์ ๋ฆฌํ๋ฉด,
- JOIN: ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ์ฌ ์กฐํํ ๋ ์ ์ฉํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์ ์ต์ ํ๋๋ฏ๋ก ์ฑ๋ฅ์ด ์ฐ์ํฉ๋๋ค.
- FOR ALL ENTRIES: ์ธํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ ์ฉํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๋ฅผ ์ค์ผ ์ ์์ง๋ง, ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ง ์์์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
728x90
๋ฐ์ํ
'๐งโ๐ผ SAP > ABAP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SAP ABAP] INTO CORRESPONDING FIELDS OF TABLE๊ณผ INTO TABLE ์ฐจ์ด์ , ์์ (0) | 2024.07.10 |
---|---|
[SAP ABAP] INTO TALBE ์ด๋? (์์ ํฌํจ) (0) | 2024.07.10 |
[SAP ABAP] INCLUDE ํ์ผ๋ช ๊ท์น ๋ฐ ์๋ฏธ: CLS, F01, I01, O01, T01 (0) | 2024.07.09 |
[SAP ABAP] START/END-OF-SELECTION ์ด๋? (์์ ํฌํจ) (0) | 2024.07.09 |
[SAP ABAP] FOR ALL ENTRIES IN ์ด๋? (์ฌ์ฉ ์์ ํฌํจ) (0) | 2024.06.27 |