Q&A

  • 이렇게하면 합이 몇배로 되는데요..왜그러죠?
      with Dm.sqlwork do begin
      Close;
      Sql.Clear;
      SQL.Add('Select  Bun_Name, Sum(P.Gaetsu) gaetsu, Sum(P.Panme_ga) Panme_ga ,');
      Sql.Add('        Sum(P.BanPum) Banpum, Sum(P.Panme_ga) Sije,');
      Sql.Add('        Sum(I.Gaetsu) IbgoSuRyang,');
      Sql.Add('        Sum(I.Ib_ga) IbgoGumek, Sum(I.Ib_ga) IbGoGumEk  From  pangutemp P, Ibgo I');
      SQL.Add('Where P.Pandate =:aa and (P.Bun_code = I.Bun_code) and I.Reg_date =:aa and P.bigo <> ''취소'' ') ;
      Sql.Add('group by Bun_Name');
      Sql.Add('Order by Bun_Name');

      ParamByName('aa').AsString := aa;
      Open;
      end;
이렇게 하면 pangutemp하고 ibgo하고 있는 데이터가 배수로 중복되서 나옵니다.
왜그러죠?
2  COMMENTS
  • Profile
    손춘수 2002.01.10 21:36
    제생각에는 조인 조건이 불완전한것 같습니다.

    (P.Bun_code = I.Bun_code) --> 이 조건으로 P 테이블과 I 테이블이

    조인 되었는데 이경우는 Bun_code가 P,I 테이블 모두에서 Unique Key

    이어야만 합니다. Select *......로 확인해 보심이 좋을듯 싶습니다.



  • Profile
    정형준 2002.01.10 13:37
    이런 경우 여러가지 예측가능한 요인들이 있지만
    이번 경우는 (단순하게 생각해서)
    Bun_Name이 중복된 경우인것 같습니다.
    Group By 가 Bun_code가 아니고 Bun_Name으로 되어있기 때문에
    같은 명칭이 존재할 경우 값이 틀려지겠죠.
    Table에 들어있는 Data를 잘 조사해보십시요.

    Key가 Bun_code라면 group by Bun_code, Bun_Name 로 하시는 것이 바람직한 SQL 입니다.

    그럼 도움이 되셨기를 바라며....