Q&A

  • select문에서 조건값 개수가 변화하면.. ㅠ.ㅠ
안녕하세여..

오늘도 참 화창한 날이군여..

화창한 날씨만큼 좋은 일들만 가득 일어났으면 좋겠씀돠 ^^

select문을 통해 쿼리를 하려고 합니다.

조건값이 일치하는 내용을 가져오려구여..

아래처럼여...

select * from 테이블명  where 조건

근데..

문제는 이 조건값 개수가 변한다는 겁니다.

하나일 수도 있고.. 없을 수도 ..

그리고 굉장히 여럿일 수도 있죠..

이 문제를 해결할 방법이 있을깝쇼??
5  COMMENTS
  • Profile
    KDDG_ZZOM 2003.06.04 00:31
    조건이 어떤식으로 변한다는건가요?
    select *
      from 테이블명
    where 비교할필드 in ('1',2'...)

    이런식으로 하시면 되는데...  근데 in이 인덱스를 타던가??? 안타던걸로 기억이...^^

    즐프하세요...

  • Profile
    남궁혁 2003.06.04 01:29
    답변 감솨함돠..

    소스가 아래와 같은데..

       aaa :=  ValueListEditor1.Values[Valuelisteditor1.Keys[1]];

      with DM.qry_rtn  do begin
        close;
        sql.Clear;
        sql.Add('select * from tb_test');
        sql.Add('where code in (:code)');
        parambyname('code').AsString := aaa;
        open;
        first;
      end;  

    이상하게도..

    조건의 개수가 하나일 땐 정상인데..

    두 개 이상이 되면..

    결과값이 없네여. ㅠ.ㅠ

    :code 대신에..

    실제 값..

    01, 02 등을 입력하면..

    값이 잘 나오는데..
  • Profile
    KDDG_Hoya 2003.06.04 01:56

    파라미터를 잘못 쓰셨군여..

      두개이상 쓰실려면, 파라미터를 두개를 만들어 사용해야 합니다.

      code in (:code1, :code2)

      님이 하신대로 함..
      code in (:code) => code in ('1, 2') 이값이죠..
      그러니 당연히 검색이 안되는 것입니다..


       번거롭다면..

      sql_str := format('select * from 테이블 where code in (%s)', ['1, 2']);
      이런 방법두 있겠네요..ㅎㅎ
  • Profile
    남궁혁 2003.06.04 02:36
    제가 제대루 설명을 못했네여..

    죄송^^

    다시  설명을 하자면..

      aaa :=  ValueListEditor1.Values[Valuelisteditor1.Keys[1]];
    // Valuelisteditor이라는 컴포넌트안에 들어 있는 값을 읽어 aaa 이라는

    string 변수에 대입합니다. 이 때 aaa에 들어가는 이 값은..

    01  아님 02 그것두 아님 03 일 수도 있구여...

    01, 02, 03 이 될 수도 있답니다.

    다시 한 번 정리하자면..

    aaa := 01

    혹은 aaa := 02 혹은 aaa := 03

    혹은 aaa := 01, 02 혹은 aaa := 02, 03

    혹은 aaa := 01, 03

    또는 aaa := 01, 02, 03

    이렇게 될 수도 있구여..

    쩝..

    제가 설명을 하면서도 정리가 잘 안되는군여..

    근데..

    여기에다..

       with qry  do begin
        close;
        sql.Clear;
        sql.Add('select * from cd_equipkind');
        sql.Add('where code in (01,02)');
        open;
        first;
      end;  

    이런 식으로 직접 입력을 하면..

    결과값이 나오거든여..

    근데..

    aaa 값에 01, 02를 넣어서..

       aaa :=  '01,02'
      with DM.qry_rtn  do begin
        close;
        sql.Clear;
        sql.Add('select * from cd_equipkind');
        sql.Add('where code in (:code)');
        parambyname('code').AsString := aaa;
        open;
        first;
      end;  

    이렇게 하면 값이 안 나온단 뜻이였답니다. ㅠ.ㅠ


  • Profile
    KDDG_ZZOM 2003.06.04 02:42
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Code : String;
    begin
      Code := '''01''' + ',' + '''02''' + ',' + '''03''';
      ShowMessage(Code);
    end;


    위에 식으로 포문으로 원하는만큼 돌리면서 변수를 만들면 되겠네요...^^

    즐프하세요...

    • 曦昇
    • 2003.06.04 03:47
    • 3 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2003.12.05 19:39
      이미 지난 답변이지만.. Screen.Height - screen.WorkAreaHeight  로 구해도 되네요..^^ ...
    • KDDG_ZZOM
      2003.06.04 04:04
      procedure TForm1.Button1Click(Sender: TObject); var   Rect : TRect; begin   ...
    • 曦昇
      2003.06.04 04:12
      .
    • 장경임
    • 2003.06.04 02:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최은하
    • 2003.06.04 02:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • LuckyBoy
      2003.06.04 19:23
      일단은 어떠한 데이터 베이스라도 님이 생각하시는대로 원샷에 데이터를 만들수 없습니다.. 왜 그렇게 ...
    • KDDG_ZZOM
      2003.06.04 02:16
      머리가 나뻐서 인지... 이해가 잘안되는데... 테이블에 아래그림처럼 데이타가 들어갔는데... 832 오...
    • ㉯㉰감자
      2003.06.04 19:49
      Union하신거라면 쿼리에서 해결이 가능할것 같습니다 Union이 아니더라도... 어느정도는 해결이 가능할 ...
    • 이경수
    • 2003.06.04 01:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재현
      2003.06.04 02:03
      간단히 Ctrl+F2 를 눌러 보시고 안되면 Delphi 메뉴에서 Run -> Program Reset 을 누르시면 됩니다. ^...
    • 이경수
      2003.06.04 20:13
      아 그렇군여........감사합니다.........^^ 앞으로 많이 물어볼거 같음......ㅎㅎ
    • 휴초보
    • 2003.06.04 01:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최종민
      2003.06.05 09:48
      좀 더 자세히 적어주시면 좋으련만... 이해한 만큼만 적어볼께요... RxChar는 데이터가 들어오는 경우에 ...
    • 김주성
      2003.06.04 01:47
      uses 에서 ShareMem을 빼니까 되네요 uses 절에서 맨 먼저 참조하게 하지 않아서 그런가요? 왜 그런지...
    • 김주성
      2003.06.09 16:22
      ShareMem은 uses 절에서 맨 먼저 쓰라고 돼 있네요... ㅡ.ㅡ;;
    • 이재현
    • 2003.06.04 00:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.06.04 04:40
      퀵자체로는 힘들것같네요... TPrinter로 코딩으로 구현해보세요... 예전에 자료실에 올린적있었는데... ...
    • 곽재근
    • 2003.06.04 00:37
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 오선배
      2003.06.04 03:30
      글쎄요 제가 그쪽 상황를 자세이 모르니 저도 답답하네요 왜 StrUtils.pas 를 변경했는지 혹시 자체적으...
    • yosule
      2003.06.04 03:12
      StdActns, Action유닛을 사용하신것 같군요. StrUtils버전이 틀린것으로 컴파일 할려니 발생하는 에러입...
    • 곽재근
      2003.06.11 02:40
      건들인것은 없거든요... 그냥 rx 컴퍼넌트를 설치 한거 밖에 없는데...
    • 정영봉
    • 2003.06.04 00:21
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 미친코딩
      2003.06.04 01:27
      따로 설치 하시려면 여기 자료실에 JetSetup.exe이라는 파일 올려놓은거 있습니다. 그거 받아 설치하셈.....
    • nilriri™
      2003.06.04 00:41
      샬롬~ msdn에서..mdac다운 받으신 다음에.. 해당 인스톨버젼...mdactypeko.exe (아마..이 비슷할 겁...
    • 정영봉
      2003.06.04 01:31
      닐리리님,미친코딩님 답변감사한데요....두개다  깔아도 안되네요..
    • 정영봉
      2003.06.04 04:14
      해결하고 나니까 정말 간단하고,신기하네요.. 담에 이런 질문 올리시는 분 있으면 제가 화면 캡쳐해서 올...
    • 남궁혁
    • 2003.06.04 00:07
    • 5 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.06.04 00:31
      조건이 어떤식으로 변한다는건가요? select *   from 테이블명 where 비교할필드 in ('1',2'...
    • 남궁혁
      2003.06.04 01:29
      답변 감솨함돠.. 소스가 아래와 같은데..    aaa :=  ValueListEditor1.Value...
    • KDDG_Hoya
      2003.06.04 01:56
      파라미터를 잘못 쓰셨군여..   두개이상 쓰실려면, 파라미터를 두개를 만들어 사용해야 합...
    • 남궁혁
      2003.06.04 02:36
      제가 제대루 설명을 못했네여.. 죄송^^ 다시  설명을 하자면..   aaa :=&...
    • KDDG_ZZOM
      2003.06.04 02:42
      procedure TForm1.Button1Click(Sender: TObject); var   Code : String; begin   ...
    • 이경돈
    • 2003.06.03 23:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • yosule
      2003.06.04 03:16
      ^^
    • ㉯㉰감자
      2003.06.03 21:49
      -- 레지스트리 등록 ----- procedure .... var   reg : TRegistry; begin   reg ...
    • 돈키호테
      2003.06.03 23:20
      답변 감사합니다.^^ 한가지만 더요 -- 레지스트리 등록 ----- procedure .... var   ...
    • ㉯㉰감자
      2003.06.04 19:20
      앗...답변이 늦어서 죄송합니다... $112233은... 16진수 표현입니다..(물론 숫자이구요) regedit로 ...
    • 돈키호테
      2003.06.04 20:23
      냉무 라니깐요 ^^
    • 바보
      2003.06.03 22:40
      전역변수라면 Data segment에 할당이 되고 지역변수라면 프로세스의 Stack에 변수가 할당이 됩니다. GetM...
    • 이종택
    • 2003.06.03 21:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • yosule
      2003.06.04 03:20
      일단 필드의 값을 임시변수에 저장해서 그 임시변수를 사용해보십시요. 잘 나옵니까? 그러면 필드의 값...
    • 박정순
    • 2003.06.03 21:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2003.06.04 00:37
      샬롬~~~ 얼마전에 님 질문 간단히 답해 드렸던거 같은데.. 아직 해결하지 못하신건가여??...도움이 ...
    • 박정순
      2003.06.04 02:30
      정말 감사합니다. 님의 대답으로 인해 한시름 덜었습니다. 수고하세요.