2013-04-10 4 views
0

다른 테이블 필드의 입력을 사용하여 필드에 삽입하려고합니다. 다른 테이블의 값 삽입

I가 다음 필드,

새 테이블 스키마

  • 이름
  • Industryid (int)를
  • Locationid (INT)이 많은 데이터베이스 엔진 전적으로 가능하지만

하지만 실제 레코드 같은

  • XXXX
  • TEXT (VARCHAR)
  • TEXT (대 Varchar)

하지만 다른 테이블의 산업에서 아이디의, 위치에 의해이 두 Industryid 및 Locationid를 원한다.

나는

산업

  • 에 대한 또 다른 두 테이블 이드
  • 이름

위치가

    이름이 내 쿼리

입니다 6,

  • 아이디
  • ,

    select'insert into organizations(name,industryid,locationid) 
    values 
    ('''+ 
    Nameofthecompany+''','+ 
    Isnull(industrytype,'Null')+','+ 
    ISNULL(Location,'Null')+')' 
    from Organization` 
    

    결과

    insert into organizations(name,industryid,locationid) 
    values 
    ('Swamy',Telcom,Chennai) 
    

    예상 결과

    ,
    insert into organizations(name,industryid,locationid) 
    values 
    ('Swamy',12,150) 
    
  • +3

    테이블 구조 ??? 검색어 삽입 ??? 질문을 수정하십시오. – Freelancer

    답변

    2

    현재/실제 레코드가 이미 Organization이라는 테이블에있는 경우 쿼리는, 당신은 당신의 새로운 Organizations 테이블을 채우는 데이 방법을 사용할 수 있습니다

    INSERT INTO Organizations(name, IndustryId, LocationId) 
    SELECT o.Nameofthecompany, i.Id, l.Id 
    FROM Organization AS o 
    LEFT JOIN Industries AS i ON o.industrytype = i.Name 
    LEFT JOIN Location AS l ON o.Location = l.Name 
    

    이것은 기존 이름을 소요 참조 테이블 (IndustriesLocations)에 조인하고 해당 텍스트 값에 대한 Id 값을 검색합니다.

    LEFT JOIN은 조직에서 모든 이름을 다시 가져 오지만 참조 테이블에 일치하는 산업 및 위치가 필요하지 않습니다.

    +0

    나는 이것을 실행할 때 아무 변화가 없다. 왜? – PoliDev

    +0

    왼쪽 조인에 내부 조인 대신 사용됩니다. 다음 그것은 작동합니다. – PoliDev

    +0

    @AngDei LEFT JOIN을 갖기 위해 내 대답을 업데이트했습니다. 이렇게하면 industrytype 및 Location이 참조 테이블의 값과 일치하도록하는 요구 사항이 제거됩니다. –

    0

    당신은 같은 것을 수행 할 수 있습니다

    INSERT INTO TestTable (Col1, Col2) 
    SELECT Col1, Col2 
    FROM OriginalTable 
    WHERE Conditions 
    
    : 만 INTO 절에 지정된 테이블이

    또는 존재하지 않는 작동하는 경우 INTO SELECT

    SELECT Col1, Col2 
    INTO TestTable 
    FROM OriginalTable 
    WHERE Conditions 
    

    공지 사항

    관련 문제