직번을 파라메터로 받아서 0006인포타입의 주소를 검색하려 하는데..
subtype의 텍스트를 가져오려고 t591s와 inner join을 사용하려는데 원하는 결과가 나오지 않네요..
사용이 잘못된것인지 답변 부탁드립니다.
아래는 SQL 구성 소스입니다.
*직번으로 주소검색.
SELECT t2~stext t1~begda t1~ort01 t1~ort02 t1~stras
INTO CORRESPONDING FIELDS OF TABLE i_addr
FROM pa0006 AS t1 INNER JOIN t591s AS t2
ON t1~subty = t2~subty
WHERE t1~pernr = p_01.
결과 : 하위유형의 이름, 시작일자, 구역, 시도, 주소1의 내용을 가져오려합니다.
존 주말 되세요^^
댓글 2
-
SkyDream
2008.02.18 17:37
-
혀나미
2008.02.20 06:36
SkyDream님 감사요.. 원하는 데이터가 나왔습니다.
Inner Join을 사용하는데 subty필드값이 기본키로 중복이 안될것이라고 생각을 했네요..
님의 답변처럼 Join조건으로 인포타입 구분이 되어야 하네..^^
아래와 같이 구성했습니다.
SELECT t2~stext t1~begda t1~ort01 t1~ort02 t1~stras
INTO CORRESPONDING FIELDS OF TABLE i_addr
FROM pa0006 AS t1 INNER JOIN t591s AS t2
ON t1~subty = t2~subty
AND t2~sprsl = sy-langu
AND t2~infty = '0006'
WHERE t1~pernr = p_01.
pa0006의 subty값과 동일한 값이 t591s에 존재하는지 먼저 확인해 보시구요...
inner join의 경우 join조건을 만족하는 레코드가 t591s에 있을 경우에만 select가 됩니다.
t591s에 조건을 만족하는 레코드가 없더라도 pa0006의 data를 가져오고자 한다면
left outer join을 사용하시면 됩니다.
그리고.. 위의 경우 where절에
t2.SPRSL = sy-langu and t2.INFTY = '0006' 더 추가해 주셔야 할 것 같습니다.