Q&A

  • 두개의 테이블을 비교하여 같은것을 삭제하고자 할때.
안녕하세요...

질문을 드리게 됐네요...



2개의 테이블을 비교하여 즉 A 테이블과 B 테이블이 있다고 하면...

두개는 다른 테이블인데요...

A 테이블의 NUM 필드와

B 테이블의 NUM2 필드를 비교하여 같은 필드내에 같은 내용이 있을경우,..

A 테이블의 해당 레코드를 지우고 실어요...



즉 서로 다른 레코드만 남게 하고 싶군요...

ttable 를 사용하여 비교 하여 봤지만... A xpdlqmfdl 207메가고 60만건이 넘는 자료기 때문에 도저히 시간이 많이 걸리는 군요...



SQL 을 이용하면 빠를것 같은데....

둘다 DBF 타입입니다...

도와 주십시요...



4  COMMENTS
  • Profile
    노인네 1999.07.08 00:25
    안녕하세요..



    다름이 아니라 일반 메모( Memo )컴퍼넌트에서는



    Memo1.Lines.Add( ' Add line '); 을 수차례 시행하면



    메모장이 자동으로 스크롤이 되어 항상 제일 나중에 첨부된 것이 보이는데



    Richedit에서는 위와 같은 문장을 실행하면..

    스크롤이 되지 않고 보이지 않는 밑으로 붙여져서 스크롤바을 움직여야

    보이는데 메모와 같이 할수있는 메소드나 프로퍼티 세팅값을

    아시는분 한수 부탁합니다..

    어떤 경우라도 자동으로 스크롤이 되면 되는데 :=)

  • Profile
    신호성 1999.04.27 03:49
    류 wrote:

    > 안녕하세요...

    > 질문을 드리게 됐네요...

    >

    > 2개의 테이블을 비교하여 즉 A 테이블과 B 테이블이 있다고 하면...

    > 두개는 다른 테이블인데요...

    > A 테이블의 NUM 필드와

    > B 테이블의 NUM2 필드를 비교하여 같은 필드내에 같은 내용이 있을경우,..

    > A 테이블의 해당 레코드를 지우고 실어요...

    >

    > 즉 서로 다른 레코드만 남게 하고 싶군요...

    > ttable 를 사용하여 비교 하여 봤지만... A xpdlqmfdl 207메가고 60만건이 넘는 자료기 때문에 도저히 시간이 많이 걸리는 군요...

    >

    > SQL 을 이용하면 빠를것 같은데....

    > 둘다 DBF 타입입니다...

    > 도와 주십시요...

    >



    안녕하세요?

    신호성 입니다.

    아래내용으로 실행해 보세요



    DELETE FROM A

    WHERE NUM IN (SELECT DISTINCT NUM2 FROM B)



















  • Profile
    구창민 1999.07.08 01:38
    노인네 께서 말씀하시기를...

    > 안녕하세요..

    >

    > 다름이 아니라 일반 메모( Memo )컴퍼넌트에서는

    >

    > Memo1.Lines.Add( ' Add line '); 을 수차례 시행하면

    >

    > 메모장이 자동으로 스크롤이 되어 항상 제일 나중에 첨부된 것이 보이는데

    >

    > Richedit에서는 위와 같은 문장을 실행하면..

    > 스크롤이 되지 않고 보이지 않는 밑으로 붙여져서 스크롤바을 움직여야

    > 보이는데 메모와 같이 할수있는 메소드나 프로퍼티 세팅값을

    > 아시는분 한수 부탁합니다..

    > 어떤 경우라도 자동으로 스크롤이 되면 되는데 :=)



    노인네 님 안녕하세요?

    혹시 이전에 뵈었던 노이네99 이신지요?

    음.. 아뭍든

    RichEdit도 Memo에서랑 같은 기능을 사용하실수 있습니다.

    아래처럼 한 번 해보세요.

    아래 //RichEdit1.SelStart := 0; 이줄의

    주석을 풀면 RichEdit의 라인은 가장 아래에서 위로

    다 보이며 스크롤 한뒤 케럿만 내려가 있게 됩니다.

    그럼.. 즐거운 프로그래밍 되세요~



    procedure TForm1.Button1Click(Sender: TObject);

    var i : integer;

    begin

    for i:= 1 to 15 do RichEdit1.Lines.Add('가나다라마바사아...');

    RichEdit1.SetFocus;

    RichEdit1.Perform(EM_LINESCROLL, 0, RichEdit1.Lines.Count-1);

    //RichEdit1.SelStart := 0;

    RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX,

    RichEdit1.Lines.Count-1, 0);

    end;

  • Profile
    구창민 1999.04.26 22:20
    류 wrote:

    > 안녕하세요...

    > 질문을 드리게 됐네요...

    >

    > 2개의 테이블을 비교하여 즉 A 테이블과 B 테이블이 있다고 하면...

    > 두개는 다른 테이블인데요...

    > A 테이블의 NUM 필드와

    > B 테이블의 NUM2 필드를 비교하여 같은 필드내에 같은 내용이 있을경우,..

    > A 테이블의 해당 레코드를 지우고 실어요...

    >

    > 즉 서로 다른 레코드만 남게 하고 싶군요...

    > ttable 를 사용하여 비교 하여 봤지만... A xpdlqmfdl 207메가고 60만건이 넘는 자료기 때문에 도저히 시간이 많이 걸리는 군요...

    >

    > SQL 을 이용하면 빠를것 같은데....

    > 둘다 DBF 타입입니다...

    > 도와 주십시요...

    >



    류님 안녕하세요? 구창민입니다.

    아래와 같은 방법이 어떨까요?



    먼저 두 테이블을 Query1, Query2에 붙였다 가정하구,

    의사코드를 적어보겠습니다.



    Query1.Open; //비교대상필드를 먼저 오픈하구요,



    while( not Query1.EOF ) //비교가 될 테이블의 끝까지 루프를 돌며...

    begin

    Query2.Close

    Query2..SQL.Clear;

    Query2..Sql.Add('Delete From 테이블명 Where Name =:Name');

    Query2..ParamByName('Name').AsString := Query1.FieldByName(특정필드);

    Query2..ExecSQL;

    Query1.Next; //다음 비교대상을 위해 레코드 이동

    end;

    음..말씀하신 작업을 제가 지식이 부족해 한방에 쿼리를

    날리긴 힘들거 같구요..

    그리고, 60만건 정도의 데이타라면 매우빠른 속도를 낼수 있는

    쿼리는 아마 존재하지 않을거 같네요.

    위처럼 작성한 의사코드와 같은 방법으로 하면 되지 않을까 싶습니다.

    직접 테스트 해보진 못했습니다.

    그럼.. 즐거운 코딩되시길..

    • 정찬기
    • 1999.04.27 19:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.27 22:02
      Components 메뉴에 import ActiveX Control항목을 선택하면 ListBox에 인스톨이 가능한 ActiveX컨트롤들...
    • 이상국
    • 1999.07.08 03:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상국
      1999.07.09 03:42
      이상국 께서 말씀하시기를... > Install Shield Pro 5.1로 BDE 5.0을 설치하려고 합니다. > > 근데 ww...
    • 이동수
    • 1999.04.27 02:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.27 09:03
      이동수 wrote: > 일반적인 DLL의 사용은 하고 있는데 > 필요에 의해서 C로 만든 DLL을 사용해야 합니다....
    • 한경수
    • 1999.04.27 03:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.27 08:59
      한경수 wrote: > 델파이 초보자 입니다. > > 소스를 분석하다 보면 > XXX.Create(Application); > ...
    • 박성훈
    • 1999.07.08 02:10
    • 10 COMMENTS
    • /
    • 0 LIKES
    • rain
      1999.04.27 04:49
    • 조복기
      1999.07.08 02:41
    • 신인재
      1999.04.27 07:29
    • 구창민
      1999.07.08 02:53
    • 구창민
      1999.07.08 03:20
    • 조복기
      1999.07.08 03:33
    • 구창민
      1999.07.08 04:05
    • • • •
    • 이명학
    • 1999.07.08 01:40
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 강경중
      1999.04.27 05:12
      저는 LAN에서 이루어 질수 있는 채팅 프로르램을 짤려고 하는데 어려운 점이 몇가지 있습니다. 좀 가르쳐 ...
    • 구창민
      1999.07.08 02:15
      이명학 께서 말씀하시기를... > 가끔 프로그램을 보면 StringGrid나 DBGrid의 Cell에서 ComboBox의 형태를...
    • 글쎄요.
      1999.04.27 20:09
      1.첫번째 질문 Edit1의 길이 제한을 두고 StrToIntDef함수를 사용해 체크하면 됩니다. 다음은 그 예(길이...
    • 한경수
    • 1999.04.26 23:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.27 01:28
      한경수 wrote: > 하나의 윈도우에서 윈도우를 브라우저의 프레임을 나누어 왼쪽의 메뉴를 누를때 마다 각...
    • rain
      1999.04.27 05:09
      안치봉 wrote: > 한경수 wrote: > > 하나의 윈도우에서 윈도우를 브라우저의 프레임을 나누어 왼쪽의 메...
    • rain
      1999.04.27 04:49
      어플리케이션이 실행되면 보통 작업표시줄에 나타나게 되는데, 작업표시줄에 나타나지 않고 실행되게 하려...
    • 구창민
      1999.07.08 02:07
      서경철 께서 말씀하시기를... > 배열로 버튼을 만들때는 TButton.Create(Self); > 이렇게 해서 만들었는...
    • 신인재
      1999.04.27 07:29
      rain wrote: > 어플리케이션이 실행되면 보통 작업표시줄에 나타나게 되는데, > 작업표시줄에 나타나지 ...
    • 서경철
      1999.07.12 20:10
      > TImage.Create메소드는 TComponents 에서 override 된 메소드이므로 > 위와 같이 하셔도 동작되어야 합...
    • 이정욱
      1999.07.08 01:49
      음 이상하군요.. 당연히 되어야 하는데... 쩝.. 전 이렇게 합니다. var i : integer; Image : ar...
    • 강성만
    • 1999.07.08 01:06
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 고혜정
      1999.04.25 12:36
      안녕하세요.. 오래간 만에 들어와보니 달라 졌군요. 스토오드 프로시저 컴포넌트를 사용할 기회가 생겼는...
    • 신호성
      1999.07.08 19:02
      강성만 께서 말씀하시기를... > 안녕하세요... > 매번 여기서 답변을 얻는 방문객입니다.. > 질문에 답...
    • 신호성
      1999.04.27 04:11
      고혜정 wrote: > 안녕하세요.. 오래간 만에 들어와보니 달라 졌군요. > 스토오드 프로시저 컴포넌트를 ...
    • 1999.04.26 21:24
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 노인네
      1999.07.08 00:25
      안녕하세요.. 다름이 아니라 일반 메모( Memo )컴퍼넌트에서는 Memo1.Lines.Add( ' Add line '); 을 ...
    • 신호성
      1999.04.27 03:49
      류 wrote: > 안녕하세요... > 질문을 드리게 됐네요... > > 2개의 테이블을 비교하여 즉 A 테이블과 B...
    • 구창민
      1999.07.08 01:38
      노인네 께서 말씀하시기를... > 안녕하세요.. > > 다름이 아니라 일반 메모( Memo )컴퍼넌트에서는 > ...
    • 구창민
      1999.04.26 22:20
      류 wrote: > 안녕하세요... > 질문을 드리게 됐네요... > > 2개의 테이블을 비교하여 즉 A 테이블과 B...
    • 한경수
    • 1999.04.27 03:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.27 08:59
      한경수 wrote: > 델파이 초보자 입니다. > > 소스를 분석하다 보면 > XXX.Create(Application); > ...
    • 이정욱
      1999.07.08 01:46
      쩝.. 제가 사용하는 방법은 이렇습니다. 델파이로~ 먼저 전역변수를 하나 놓아야 겠죠? var Button...
    • 문보석
      1999.07.08 04:14
      답변감사드립니다... 쩝... 제가 원하는 것은 단순히 이정욱님의 말씀대로 버튼을 눌렀을때 루프문이...
    • 안치봉
      1999.07.08 04:18
      PeekMessage, GetMessage 를 사용해 보시죠... 자세한건 Win32 API 도움말을 참고하세요. 아니면 순...
    • 신인재
      1999.04.27 03:19
      박재근 wrote: > 프로그램을 작성중인데 입력받은 날짜(문자형)을 시간형으로 변경하여야 하는 데 > 그때...
    • tedeum
    • 1999.07.08 00:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최수영
      1999.07.11 20:22
      tedeum 께서 말씀하시기를... > with StProc do begin > If Active Then Close; > ParamByNam...