Q&A

  • query문에서 count(*)값 구하기...
안녕하세요 오랜만에 오는군요 *^-^*

이런 좋은 사이트가 있는것에 대해서 감사합니다



저는 델파이 3.0에서요 query문에서 query된 총갯수(count(*))를 구하고자 하는데

어떻게 해야 할지 잘모르겠어요



ex) select count(*) into :value from customer where count_no = :N1



제가 원하는건요 COUNT(*)의 값을 :value 에 넣고자 하는데 어떻게 해야 할지

모르겠습니다.

물론 델파이는 into 를 기능을 갖고 있지 않더군요. 그데신(fieldByName)이 있더군요.

다른 파워빌더나 비주얼 베이직은 그런 기능이 있어 참 편한것 같아요

왜 델파이는 지원하지 않는지 모르겠어요 그럼 참 편할텐데....

제발 가르쳐주시면 고맙겠습니다..





3  COMMENTS
  • Profile
    정종구 1999.12.04 23:12
    김 인수 wrote:

    > 안녕하세요 오랜만에 오는군요 *^-^*

    > 이런 좋은 사이트가 있는것에 대해서 감사합니다

    >

    > 저는 델파이 3.0에서요 query문에서 query된 총갯수(count(*))를 구하고자 하는데

    > 어떻게 해야 할지 잘모르겠어요

    >

    > ex) select count(*) into :value from customer where count_no = :N1

    >

    > 제가 원하는건요 COUNT(*)의 값을 :value 에 넣고자 하는데 어떻게 해야 할지

    > 모르겠습니다.

    > 물론 델파이는 into 를 기능을 갖고 있지 않더군요. 그데신(fieldByName)이 있더군요.

    > 다른 파워빌더나 비주얼 베이직은 그런 기능이 있어 참 편한것 같아요

    > 왜 델파이는 지원하지 않는지 모르겠어요 그럼 참 편할텐데....

    > 제발 가르쳐주시면 고맙겠습니다..

    >

    >

    안녕하세요?

    쿼리한 필드의 갯수를 말씀하시는 건가요?

    약 2가지 이상의 방법이 있는데

    1. SQL을 이용한 방법

    2. 델파이의 TQuery.RecordCount메쏘드를 이용한 방법이 있습니다.





    1. SQL을 이용할 때는요?

    Query1.Close;

    Query1.SQL.Clear;

    Query1.SQL.Add(' Select Count(Name) as NameCount From Fight_Tbl Where Rank = "3위" ');

    Query1.Open;

    이런식의 SQL문이 있다고 가정하면..

    VariableCount := Query1.FieldByName('NameCount').AsInteger; // 변수에 카운트가

    들어가거든요...



    2. 는TQuery.RecordCount를 이용한 방법



    Query1.Close;

    Query1.SQL.Clear;

    Query1.SQL.Add(' Select * From Fight_Tbl Where Rank = "3위" ');

    Query1.Open;



    // 로컬.DB가 아닐때는 이구문을 수행..

    Query1.FetchAll;

    // 로컬이 아닐때는 RecordCount만 써주면 제값을 찾지 못하거든요.

    // 쉽게 말해서 로컬이 아닐때는. 쿼리를 해서 테이블의 마지막 행까지 읽지 않기때문에

    // Fetchall;이라는 메소드가 필요합니다.



    쿼리 문장이 수행되면..

    VariableCount := Query1.RecordCount; // 총쿼리된 레코드 카운트가 들어가죠..



    이해 되셨죠?

    델파이에는 여러가지 방법으로 편리한 메소드가 많이 있습니다.

    없으면 상속으로 조합을 해도 되구요..

    굉장히 자유롭도 또 강력하고 편하죠..

    그럼 즐프 하세요..





  • Profile
    황선희 1999.12.04 20:29


    다른 분도 답변을 하셨는데, 같은 내용인거 같습니다만, ...



    select count(*) cnt1 from customer

    where count_no = :N1



    이렇게 사용하고 있습니다.



    이런 방법으로 하면 cnt1이라는 필드가 만들어지고 cnt1이 카운트를 가지고 있습니다.



    그리고 다른 방법으로는



    with Query1 do

    begin

    Close;

    Sql.Clear;

    Sql.Add('select count(*) cnt1 from customer');

    Sql.Add('where count_no = :N1');

    Open;

    FieldByName(N1).AsInteger := Edit1.Text;

    end;



    Edit2.Text := Query1.RecordCount;



    이렇게 하시면 카운트가 Edit2로 들어갑니다.





    김 인수 wrote:

    > 안녕하세요 오랜만에 오는군요 *^-^*

    > 이런 좋은 사이트가 있는것에 대해서 감사합니다

    >

    > 저는 델파이 3.0에서요 query문에서 query된 총갯수(count(*))를 구하고자 하는데

    > 어떻게 해야 할지 잘모르겠어요

    >

    > ex) select count(*) into :value from customer where count_no = :N1

    >

    > 제가 원하는건요 COUNT(*)의 값을 :value 에 넣고자 하는데 어떻게 해야 할지

    > 모르겠습니다.

    > 물론 델파이는 into 를 기능을 갖고 있지 않더군요. 그데신(fieldByName)이 있더군요.

    > 다른 파워빌더나 비주얼 베이직은 그런 기능이 있어 참 편한것 같아요

    > 왜 델파이는 지원하지 않는지 모르겠어요 그럼 참 편할텐데....

    > 제발 가르쳐주시면 고맙겠습니다..

    >

    >

  • Profile
    [질문]특정금액에서 1999.12.04 20:20
    김 인수 wrote:

    > 안녕하세요 오랜만에 오는군요 *^-^*

    > 이런 좋은 사이트가 있는것에 대해서 감사합니다

    >

    > 저는 델파이 3.0에서요 query문에서 query된 총갯수(count(*))를 구하고자 하는데

    > 어떻게 해야 할지 잘모르겠어요

    >

    > ex) select count(*) into :value from customer where count_no = :N1

    >

    > 제가 원하는건요 COUNT(*)의 값을 :value 에 넣고자 하는데 어떻게 해야 할지

    > 모르겠습니다.

    > 물론 델파이는 into 를 기능을 갖고 있지 않더군요. 그데신(fieldByName)이 있더군요.

    > 다른 파워빌더나 비주얼 베이직은 그런 기능이 있어 참 편한것 같아요

    > 왜 델파이는 지원하지 않는지 모르겠어요 그럼 참 편할텐데....

    > 제발 가르쳐주시면 고맙겠습니다..

    >

    >



    :value는 ':'땜시 델파이에서 파라메터로 인식되는데요

    대신 select count(*) value from customer where count_no = :N1 로해서

    FieldByName으로 읽으시거나

    쿠어리로 봐서 Row의 Count를 읽어도 될듯 하네요...

    TDataSet.RowCount로 하시면 총 Count는 나오거든요...