조인걸때요..
공통된 조건이 있어야 하잖아요..
그런데 그 공통된 조건이 A테이블의 FIELD1 + FIELD2 한 값과 B테이블의 FIELD3값과 같은것 뿐인데요..
예를 들면 ..
INNER JOIN bkpf AS e
ON c~belnr = e~awkey+0(10)
AND c~gjahr = e~awkey+10(4)
이런식으론 문법이 맞지 않는데.. 두 테이블 조인하는데는 어떤 방법이 있나요??
댓글 9
-
지의
2007.11.20 01:54
-
SSong
2007.11.20 01:56
JOIN 문을 조합해서 걸려면 SELECT ENDSELECT 문안에다가 넣고 돌리면 될것 같기도 한데 ~~(비추천)
그것 보다는 차라리 인터널 테이블에 각각 데이타를
담아서 LOOP를 돌리면서 READ 문으로 불러 오면서 새로운 인터널 테이블에 APPEND 시키는게
속도면에서나 로직 처리 면에서 쉬울것 같은데요 ?
-
지의
2007.11.20 01:56
쏘리요.. 다른 방법이 있을 거라고 말했는데 테스트 해보니 안되는군요. 위에 권장하지 않음이나 각자 찾는 방법으로 해보세요..
전 이게 한계에요 ㅠㅠ
-
지의
2007.11.20 01:57
loop 안에 쿼리는 속도 면은 아니겠네요.. 로직 처리 면에서는 편하겠지만.. 퍼포먼스는 굉장히 안 좋겠군요.. -
나도아밥퍼
2007.11.20 02:05
이리 저리 방법 찾기는 쉽지는 않네요. 저같은 경우는 select 문을 사용해서 it_tab에 담고 그걸 루트로 돌려서 해당 값들을 가져오는 방법을 씁니다.
그게 로직상 처리하기 편한것 같구요...디비연결 부하는 걸리겠지만..그렇다고 쉽게 할 방법이 떠오르지는 않네요..
제가 하는 방식일뿐입니다. 참고하세욤.
-
SARA
2007.11.20 02:42
예 그런방법 뿐인걸로 알고 있습니다. 오라클 SQL에서는 필드를 합치하거나 나누는 SQL 방법 많이 사용했는데, OPEN SQL에서는 안되더라구요.
인터널 테이블에 담아서 FOR ALL ENTRY 구문과 같은것을 이요해야 될거 같네요..
-
지의
2007.11.20 02:44
select 에 for all entries in 이라는 구문을 찾아보세요.. loop 는 돌려야겠지만 일단 퍼포먼스는 좋습니다.
-
숟가락맨
2007.11.20 02:46
필드 두개를 합쳐야하는 테이블을 먼저 읽고 두개 합친 값들을 레인지에 담아서 다음 테이블을 in 조건으로 셀렉트 하는건 어떤가요?
대신에...레인지에..값이 4천건정도였나..그이상 들어가면..덤프가 나던거 같더군요...
-
Lora
2007.11.20 04:33
인터널 테이블을 하나더 만들고 루푸돌려서 하나씩 모디파이 하는 방법으로 했습니다.
답변 주신분들 감사드립니다~~
아예 공통되는 키 값이 없다면.. Native SQL 이나. (권장하지 않음) 또는 쿼리를 조인하지 말고 각자 해서 하셔야겠는데요. ㅋ
하지만 공통되는 키가 하나라도 있다면 저 위에 선언된 두가지 외에 것이라도 있다면..
다른 방법이 있긴 하겠네요.
수고하세요.