data wa type sflight.
select connid
into wa-connid
from sflight
where carrid = 'LH'
group by connid
having sum( seatsocc ) > 300.
write: / wa-carrid, wa-connid.
endselect.
1. data wa type sflight.
이렇게 해도 workarea로 선언되나요?
보통 아래처럼 사용했는데
data: begin of wa,
carrid type sflight-carrid,
connid type sflight-connid,
end of wa
2. into wa-connid
이부분에 보통 into wa로 되어 있던데 위 내용은 필드명도 들어가는데 차이점이 뭔가요?
3. having sum( seatsocc ) > 300 문장에서
sum ( seatsocc )은 connid가 똑같은데 내용만 묶어 sum를 구한다는 것으로 이해하면 되는가요?
4. 출력을 해보니 connid만 나오던데 왜 carrid는 왜 출력이 않되는지요?
디버깅을 걸어봐서 제가 이해한것이 확실한지도 알고 싶고 그외 모르는것도 알고 싶어 질문을 드립니다.
댓글 2
-
페리
2009.01.05 08:21
-
im 해성
2009.01.05 18:57
위에분의 답변에 추가하면...
2. into wa-connid ... 요렇게 해주는것은요 특정된 필드를 찾아 특정된 변수에 주는것이라고 이해하시면 되고요.
into wa는 앞에 select .... 검색한 내용을 차례순서로 wa필드에 넣는다고 이해하셔도 됩니다.
3. having ... 이 문구는 group by와 같이 자주쓰는건데 특정된 필드 조합으로 그룹을 묵어 그 구룹에 조건을 덛 붙이는것입니다.
having sum( seatsocc ) > 300 요렇게 그 그룹의 seatsocc 요 필드 합이 300을 초과해야 검색한다 ...
4. select * .... 이렇게 해주시면 어떤 테이블의 모든 필드를 다 검색하여 어떠한 구조거나 변수에 준다는 뜻이 되구요.
select field1 field2 요렇게 해주시면 특정된 필드만 검색하여 준다는 뜻입니다.
1번. sflight 테이블의 WA라는 workarea로 선언됩니다.
data: begin of wa,
carrid type sflight-carrid,
connid type sflight-connid,
end of wa
이거는 필요한 필드명만 뽑아서 workarea로 선언하는 거고요.
2번. select connid 하나만 가져온다면 into wa의 connid에 넣는 다는 뜻이고요,
into wa는 아마 select * 로 되어 있을때 가져올거고요.
3번. 네.
4번. select해서 가져온 데이타가 connid 하나만 가져오고 carrid는 없네요.
select connid carrid 로 해주셔야해요