Q&A

  • [급]서브쿼리문제
키값은 사원번호로 2개가 있습니다.

사원테이블(CTWA01의 Per_idgubun, Per_idsq) 그리고

소득테이블(CTWS01의 Sod_gubun, Sod_sq) 그리고 우편번호테이블(CTGZIP의 ZIPCODE)

그런데.. 이름을 파라미터값으로 받아서 그 이름에 해당하는 사람부터 나머지 사람들의 일정 기간동안의 소득세 리스트를 만들려고 합니다.

사원테이블이나 소득테이블은 물론 이름순으로 정렬되어있지 않습니다.(사번이 키값...)

파라독스를 쓰기 때문에 View 테이블을 만들수도 없습니다.

Query문은 다음과 같구요...



select a.Per_idgubun, a.Per_idsq

from ctwa01 a

where a.per_name >= :SNAME and a.per_name <= :ENAME

-> NAME을 파라미터로 받아서 그 사원의 키값을 SELECT한후



Select S.Sod_gubun, S.Sod_sq, A.Per_name, A.Per_jumin, S.Sod_jikubday, S.Sod_restoreday, S.Sod_keum, S.Sod_sodse, S.Sod_juminse, A.Per_mail, Z.PROVINCE + ' ' + Z.CITY + ' ' + Z.ADDRESS + ' ' + A.Per_juso

From CTWS01 S, CTWA01 A, CTGZIP Z

Where (Sod_jikubday >= :SDay) and (Sod_jikubday <= :EDay)

and (Sod_gubun = Per_idgubun) and (Sod_sq = Per_idsq)

and (ZIPCODE = Per_mail)

Order by Per_name, Sod_gubun, Sod_sq, Sod_jikubday

-> 그 키값으로 해당되는 소득액을 가져와야 하는데요...

좀 깔끔하게 처리할수 있는 방법이 없을까 해서요...

VIEW TABLE을 쓰는 방법 말구요...

한명이 아닌 이름정렬 상태에서 특정사원부터 특정사원까지의 소득액 리스트입니다.

방법을 좀 가르쳐 주세요.... 부탁합니다....











2  COMMENTS
  • Profile
    배재근 2000.05.19 01:14
    지연 wrote:

    > 키값은 사원번호로 2개가 있습니다.

    > 사원테이블(CTWA01의 Per_idgubun, Per_idsq) 그리고

    > 소득테이블(CTWS01의 Sod_gubun, Sod_sq) 그리고 우편번호테이블(CTGZIP의 ZIPCODE)

    > 그런데.. 이름을 파라미터값으로 받아서 그 이름에 해당하는 사람부터 나머지 사람들의 일정 기간동안의 소득세 리스트를 만들려고 합니다.

    > 사원테이블이나 소득테이블은 물론 이름순으로 정렬되어있지 않습니다.(사번이 키값...)

    > 파라독스를 쓰기 때문에 View 테이블을 만들수도 없습니다.

    > Query문은 다음과 같구요...

    >

    > select a.Per_idgubun, a.Per_idsq

    > from ctwa01 a

    > where a.per_name >= :SNAME and a.per_name <= :ENAME

    > -> NAME을 파라미터로 받아서 그 사원의 키값을 SELECT한후

    >

    > Select S.Sod_gubun, S.Sod_sq, A.Per_name, A.Per_jumin, S.Sod_jikubday, S.Sod_restoreday, S.Sod_keum, S.Sod_sodse, S.Sod_juminse, A.Per_mail, Z.PROVINCE + ' ' + Z.CITY + ' ' + Z.ADDRESS + ' ' + A.Per_juso

    > From CTWS01 S, CTWA01 A, CTGZIP Z

    > Where (Sod_jikubday >= :SDay) and (Sod_jikubday <= :EDay)

    > and (Sod_gubun = Per_idgubun) and (Sod_sq = Per_idsq)

    > and (ZIPCODE = Per_mail)

    > Order by Per_name, Sod_gubun, Sod_sq, Sod_jikubday

    > -> 그 키값으로 해당되는 소득액을 가져와야 하는데요...

    > 좀 깔끔하게 처리할수 있는 방법이 없을까 해서요...

    > VIEW TABLE을 쓰는 방법 말구요...

    > 한명이 아닌 이름정렬 상태에서 특정사원부터 특정사원까지의 소득액 리스트입니다.

    > 방법을 좀 가르쳐 주세요.... 부탁합니다....

    >

    안녕하세요

    제의 소견 몇자 적어봅디다..올른답변인지는 모르겠지만



    Query1.SQL.Add(' select a.Per_idgubun, a.Per_idsq')

    Query1.SQL.Add(' from ctwa01 a ')

    Query1.SQL.Add(' where a.per_name >= :SNAME and a.per_name <= :ENAME ')

    Query1.SQL.Add(' order by a.per_name ');

    Query1.Open;

    j := 0;

    while not Query1.EOF do

    begin

    Query1.SQL.Add(' Select S.Sod_gubun, S.Sod_sq, A.Per_name, A.Per_jumin,');

    Query1.SQL.Add(' S.Sod_jikubday, S.Sod_restoreday, S.Sod_keum, S.Sod_sodse,');

    Query1.SQL.Add(' S.Sod_juminse, A.Per_mail, Z.PROVINCE + ' ' + Z.CITY + ' ' ');

    Query1.SQL.Add(' Z.ADDRESS + ' ' + A.Per_juso');

    Query1.SQL.Add(' From CTWS01 S, CTWA01 A, CTGZIP Z');

    Query1.SQL.Add(' Where (Sod_jikubday >= :SDay) and (Sod_jikubday <= :EDay)');

    Query1.SQL.Add(' and (Sod_gubun = Per_idgubun) and (Sod_sq = Per_idsq)');

    Query1.SQL.Add(' and (ZIPCODE = Per_mail) ');

    Query1.SQL.Add(' Order by Per_name, Sod_gubun, Sod_sq, Sod_jikubday ');

    Query1.Open;

    sGrid.Cells[0,j] := Query1.FieldByName('S.Sod_gubun').AsString ;

    sGrid.Cells[1,j] := Query1.FieldByName('S.Sod_sq').AsString ;

    .

    .

    .

    .

    end;



    아무튼 저역시 문의내용이 정확하게 이해가 안됩니다만 ..

    맞은내용인지 회신부탁합니다

  • Profile
    지연 2000.05.19 02:02
    > 안녕하세요

    > 제의 소견 몇자 적어봅디다..올른답변인지는 모르겠지만

    >

    > Query1.SQL.Add(' select a.Per_idgubun, a.Per_idsq')

    > Query1.SQL.Add(' from ctwa01 a ')

    > Query1.SQL.Add(' where a.per_name >= :SNAME and a.per_name <= :ENAME ')

    > Query1.SQL.Add(' order by a.per_name ');

    > Query1.Open;

    > j := 0;

    > while not Query1.EOF do

    > begin

    > Query1.SQL.Add(' Select S.Sod_gubun, S.Sod_sq, A.Per_name, A.Per_jumin,');

    > Query1.SQL.Add(' S.Sod_jikubday, S.Sod_restoreday, S.Sod_keum, S.Sod_sodse,');

    > Query1.SQL.Add(' S.Sod_juminse, A.Per_mail, Z.PROVINCE + ' ' + Z.CITY + ' ' ');

    > Query1.SQL.Add(' Z.ADDRESS + ' ' + A.Per_juso');

    > Query1.SQL.Add(' From CTWS01 S, CTWA01 A, CTGZIP Z');

    > Query1.SQL.Add(' Where (Sod_jikubday >= :SDay) and (Sod_jikubday <= :EDay)');

    > Query1.SQL.Add(' and (Sod_gubun = Per_idgubun) and (Sod_sq = Per_idsq)');

    > Query1.SQL.Add(' and (ZIPCODE = Per_mail) ');

    > Query1.SQL.Add(' Order by Per_name, Sod_gubun, Sod_sq, Sod_jikubday ');

    > Query1.Open;

    > sGrid.Cells[0,j] := Query1.FieldByName('S.Sod_gubun').AsString ;

    > sGrid.Cells[1,j] := Query1.FieldByName('S.Sod_sq').AsString ;

    > .

    > .

    > .

    > .

    > end;

    >

    > 아무튼 저역시 문의내용이 정확하게 이해가 안됩니다만 ..

    > 맞은내용인지 회신부탁합니다



    같은 쿼리안에 계속 ADD시키신건 잘못 코딩하신거겠죠?....

    그리고 그리드안에 표시하려구 하는게 아니구요...

    퀵레포트 상에서 그룹으로 묶어서 한 사원에 대한 일정 기간동안의 소득액들을

    한장에 한명씩 보여주려고 하는 겁니다....

    위에 코딩된것 처럼 하나씩 받아서 다시 쿼리를 하는 방법도 좋은데요...

    퀵레포트상에 어느 이벤트상에서 처리를 해줄건지 궁금합니다...

    그리구 전 이런 방법보다는...

    서브쿼리를 사용해서 하나의 쿼리컴포넌트안에 처리를 하려고 합니다...

    단, 파라독스라서 뷰는 안되구요....

    방법을 알면 가르쳐 주시구요....

    아님... 위에 코딩된 방식두 괜찮으니까...

    암튼 퀵레포트 상에서 뿌려주는 방법으로 갈쳐 주심 좋겠네요....