안녕하세요,
초보적인 질문인데요
4개 이상의 TABLE INNER JOIN 방법을 알고싶습니다.
뒤져보니 3개까지는 나오는데 VIEW사용하는것 말고
4개이상의 TABLE은 INNER JOIN이 안되는가 싶어서요.
감사합니다.
댓글 5
-
가오만땅
2008.04.03 19:19
-
빠숑
2008.04.03 19:26
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_01
FROM ( ( ( ( ekko as e
INNER JOIN lfa1 as l ON e~lifnr = l~lifnr )
INNER JOIN ekpo as p ON e~ebeln = p~ebeln )
INNER JOIN eket as k ON k~ebeln = e~ebeln )
INNER JOIN makt as m ON m~matnr = p~matnr ) -
초보아밥퍼
2008.04.03 19:59
분명 많은 테이블을 조인하셔서 사용하실수 있습니다.
그러나 테이블 조인을 줄여서 구현하는것 또한 개인능력입니다.
꼭 3~4개를 조인하여 레코드를 얻기전에 1~2개로 조인후에 나머지가 필요성이 있는지
where의 조건문을 잘 생각하시는게 중요합니다.
조인구문은 위에 다 있네요 ㅋ
-
아싸ㅎ
2008.04.03 20:39
감사합니다.
위에처럼 써봤더니 에러가 나네요.대충 해석하면 너무 길어서 UNIQUE 하지 않을수도 있다란 ㅡㅡ;.............
제가 어딘가 잘못쓴거 같네요.
-
activeman
2008.04.03 21:23
최대 24개 join이 가능하고 테이블은 25개 까지 가능하네요..
join 할때 키값으로만 조인한다면 4개 이상을 해도 속도는 그렇게 늦지 않습니다..
참고 하세요...
아래는 help에 나오는 자료 입니다..
The join syntax represents a recursively nestable join expression. A join expression consists of a left-hand and a right- hand side, which are joined either by means of [INNER] JOIN or LEFT [OUTER] JOIN. Depending on the type of join, a join expression can be either an inner (INNER) or an outer (LEFT OUTER) join. Every join expression can be enclosed in round brackets. If a join expression is used, the SELECT command circumvents SAP buffering.
On the left-hand side, either a single database table, a view dbtab_left, or a join expression join can be specified. On the right-hand side, a single database table or a view dbtab_right as well as join conditions join_cond can be specified after ON. In this way, a maximum of 24 join expressions that join 25 database tables or views with each other can be specified after FROM.
테이블 개수에 상관없이 조인 가능합니다만 그만큼 퍼포먼스는 떨어지겠죠.
3개짜리 셈플을 가지고 계시면... 동일한 방법으로 조인하시면 됩니다.
CBO 는 ... 처리 했습니다..
FROM QMEL AS A
LEFT OUTER JOIN Z.... AS B
ON A~ZQMNO = B~ZQMNO
LEFT OUTER JOIN QMFE AS C
ON A~QMNUM = C~QMNUM
AND C~FENUM = 1
LEFT OUTER JOIN QMUR AS D
ON A~QMNUM = D~QMNUM
AND D~FENUM = 1
AND D~URNUM = 1