Q&A

  • 저장 쿼리에서...
안녕 하세요..^^

MSSQL 인데 저장 하는 방법이 없을까 해서요..

A 테이블과 B테이블이 있습니다..

A 테이블                      B 테이블
A1 varchar '3'              B1 varchar '3'
A2 varchar '3'              B2 float 8
A3 float 8                     B3 varchar '3'

이런식으로 있는데..

걍 밀어 넣을 방법 없을까요?

A1 <- B1
A2 <- B2
A3 <- B3

데이터 형식이 틀려서.. 저장이 않되네요..ㅠ.ㅠ
쿼리로 넣어 버릴려고 하는데.. 방법 없을까요?
2  COMMENTS
  • Profile
    ^ㅡ^ 2004.04.24 18:11


    답변이 될지 모르겠습니다.
    일단 제가 보기엔 말이 좀 안 되는것 같습니다.
    만약 b테이블에 b2필드가 숫자가 1000자리 이상만 된다면
    저장이 불가능할꺼니까요
    b테이블의 자리수가 3자리 이하로 들어 간다면 문제가 안 되겠지만
    3자리 를 초과 한다면 절대 저장 불가할것같습니다.

    insert into a select * from b
    <=====양쪽 테이블이 같은 형식이라면 이렇게 해도 무관할꺼구요

    with query1 do
    begin
      close;
      sql.clear;  
      sql.add(' insert into a ( a1,a2,a3) ');
      sql.add('       values( :a1,a2,a3)  ');
      with query2 do
      begin
         close;
         sql.clear;
         sql.add( ' select * from b ');
         Open;
         while not query2.eof do
         begin
            query1.ParamByName('A1').AsString := query2.fieldbyname('b1').Asstring;
            query1.ParamByName('A2').AsString := Copy(query2.fieldbyname('b2').Asstring,1,3);
            query1.ParamByName('A3').AsString := query2.fieldbyname('b3').Asstring;
           query1.execsql;
         end;
      end;

    이런식으로 해도 될껀데요
    문제는 a2와 b2가 달라서 문제가 될꺼같습니다.

    도움이 되시길.,..
    그럼 항상 즐코 하세요
  • Profile
    Crazy 2004.04.24 19:52
    아래 답변하신 ^ㅡ^  님처럼 현재 설계된 테이블 레이아웃으로는 좀....ㅡ.ㅡ;
    물론 사이즈만 오버되지 않는다면 그냥 쿼리에서 해결해버리세요.

    INSERT INTO A_TABLE
    SELECT B1,
                 SUBSTR(TO_CHAR(B2),1,3),
                 TO_NUMBER(B3)
      FROM B_TABLE
    WHERE ....