Q&A

  • 다중 조건 검색 쿼리에서요..
안녕하세요...머리가 아파서 질문드립니다.

다중 조건으로 검색하는데요..

테이블에 금액이라는 필드가 5개(k1,k2,k3,k4,k5)있습니다.

조건은 한 레코드에서 이 5개를 합한 금액이 10만원을 넘지

않고 날짜가 date1에서 date2사이의 레코드를 모두 검색하는 겁니다.



close;

sql.Clear;

sql.Add('select ibhak_day,id,name,regi_day1 from master');

sql.Add('where ((ibhak_day >= :date1) and (ibhak_day <= :date2))');

//이분에 금액을 필터링하는 조건이 들어가야 할것 같은데..

sql.Add('order by ibhak_day');

ParamByName('date1').AsDateTime := StrToDate(MaskEdit4.Text);

ParamByName('date2').AsdateTime := StrToDate(MaskEdit5.Text);

Open;



에수큐엘 내공이 강한분들 답변좀 부탁합니다.





3  COMMENTS
  • Profile
    조복기 1999.08.04 00:11
    안녕하세요..조복기입니다..

    서브쿼리를 쓰지않고 간단하게 처리가능하네요..

    select문장에서 합해버리면 간단할것 같음..



    좋은하루되세요..





    close;

    sql.Clear;

    sql.Add('select ibhak_day,id,name,regi_day1, ');

    sql.Add(' k1+k2+k3+k4+k5 amount ');

    --> 옆에쓰면 필드명(앨리어스같이) 이 되는거 알죠?

    (RDB마다 문법이 좀 틀림)



    sql.Add(' from master ');

    sql.Add('where ((ibhak_day >= :date1) and (ibhak_day <= :date2))');

    sql.Add(' and amount < :num ');

    sql.Add('order by ibhak_day');

    ParamByName('date1').AsDateTime := StrToDate(MaskEdit4.Text);

    ParamByName('date2').AsdateTime := StrToDate(MaskEdit5.Text);

    ParamByName('num').AsInteger := 100000;



    Open;







    이주흥 께서 말씀하시기를...

    > 안녕하세요...머리가 아파서 질문드립니다.

    > 다중 조건으로 검색하는데요..

    > 테이블에 금액이라는 필드가 5개(k1,k2,k3,k4,k5)있습니다.

    > 조건은 한 레코드에서 이 5개를 합한 금액이 10만원을 넘지

    > 않고 날짜가 date1에서 date2사이의 레코드를 모두 검색하는 겁니다.

    >

    > close;

    > sql.Clear;

    > sql.Add('select ibhak_day,id,name,regi_day1 from master');

    > sql.Add('where ((ibhak_day >= :date1) and (ibhak_day <= :date2))');

    > //이분에 금액을 필터링하는 조건이 들어가야 할것 같은데..

    > sql.Add('order by ibhak_day');

    > ParamByName('date1').AsDateTime := StrToDate(MaskEdit4.Text);

    > ParamByName('date2').AsdateTime := StrToDate(MaskEdit5.Text);

    > Open;

    >

    > 에수큐엘 내공이 강한분들 답변좀 부탁합니다.

    >

    >





  • Profile
    이주흥 1999.08.04 02:12
    조복기 께서 말씀하시기를...

    > 안녕하세요..조복기입니다..

    > 서브쿼리를 쓰지않고 간단하게 처리가능하네요..

    > select문장에서 합해버리면 간단할것 같음..

    >

    > 좋은하루되세요..

    >

    >

    > close;

    > sql.Clear;

    > sql.Add('select ibhak_day,id,name,regi_day1, ');

    > sql.Add(' k1+k2+k3+k4+k5 amount ');

    > --> 옆에쓰면 필드명(앨리어스같이) 이 되는거 알죠?

    > (RDB마다 문법이 좀 틀림)

    >



    > sql.Add(' from master ');

    > sql.Add('where ((ibhak_day >= :date1) and (ibhak_day <= :date2))');

    > sql.Add(' and amount < :num ');

    > sql.Add('order by ibhak_day');

    > ParamByName('date1').AsDateTime := StrToDate(MaskEdit4.Text);

    > ParamByName('date2').AsdateTime := StrToDate(MaskEdit5.Text);

    > ParamByName('num').AsInteger := 100000;

    >

    > Open;

    >

    >안녕하세요...감사합니다.

    근데 제가 쓰는게 엣세스 디빈데 자꾸 에수큐엘 문법에러가

    나오네요...갈쳐주신데로 했는데...쩝...



    close;

    sql.Clear;

    sql.Add('select ibhak_day,id,name,regi_day1,');

    sql.Add ('regi_money1+regi_money2+regi_money3+regi_money4+regi_money5+regi_money6 amount,');

    sql.Add('from master');

    sql.Add('where ((ibhak_day >= :Fday) and (ibhak_day <= :Tday))');

    sql.Add(' and amount < :num');

    sql.Add('order by ibhak_day');

    ParamByName('Fday').AsDateTime := StrToDate(MaskEdit4.Text);

    ParamByName('Tday').AsdateTime := StrToDate(MaskEdit5.Text);

    ParamByName('num').AsInteger := 366500;

    Open;

    위와 같습니다...음...글고 금액 필드를 currency로 잡았는데 Integer로 읽어도

    되는지 모르겠네요...

    그럼 이만;...



  • Profile
    박성훈 1999.08.05 17:39
    이주흥 께서 말씀하시기를...

    > 조복기 께서 말씀하시기를...

    > > 안녕하세요..조복기입니다..

    > > 서브쿼리를 쓰지않고 간단하게 처리가능하네요..

    > > select문장에서 합해버리면 간단할것 같음..

    > >

    > > 좋은하루되세요..

    > >

    > >

    > > close;

    > > sql.Clear;

    > > sql.Add('select ibhak_day,id,name,regi_day1, ');

    > > sql.Add(' k1+k2+k3+k4+k5 amount ');

    > > --> 옆에쓰면 필드명(앨리어스같이) 이 되는거 알죠?

    > > (RDB마다 문법이 좀 틀림)

    > >

    >

    > > sql.Add(' from master ');

    > > sql.Add('where ((ibhak_day >= :date1) and (ibhak_day <= :date2))');

    > > sql.Add(' and amount < :num ');

    > > sql.Add('order by ibhak_day');

    > > ParamByName('date1').AsDateTime := StrToDate(MaskEdit4.Text);

    > > ParamByName('date2').AsdateTime := StrToDate(MaskEdit5.Text);

    > > ParamByName('num').AsInteger := 100000;

    > >

    > > Open;

    > >

    > >안녕하세요...감사합니다.

    > 근데 제가 쓰는게 엣세스 디빈데 자꾸 에수큐엘 문법에러가

    > 나오네요...갈쳐주신데로 했는데...쩝...

    >

    > close;

    > sql.Clear;

    > sql.Add('select ibhak_day,id,name,regi_day1,');

    > sql.Add ('regi_money1+regi_money2+regi_money3+regi_money4+regi_money5+regi_money6 amount,');

    > sql.Add('from master');

    > sql.Add('where ((ibhak_day >= :Fday) and (ibhak_day <= :Tday))');

    > sql.Add(' and amount < :num');

    > sql.Add('order by ibhak_day');

    > ParamByName('Fday').AsDateTime := StrToDate(MaskEdit4.Text);

    > ParamByName('Tday').AsdateTime := StrToDate(MaskEdit5.Text);

    > ParamByName('num').AsInteger := 366500;

    > Open;

    > 위와 같습니다...음...글고 금액 필드를 currency로 잡았는데 Integer로 읽어도

    > 되는지 모르겠네요...

    > 그럼 이만;...

    >



    잘은 모르지만 엑세스 db는 날짜의 앞뒤로 #표시를 붙여야 되는걸로 아는데요.

    정확한지...