0

쿼리 (SQL Server 2012)를 사용하려면 다음을 수행하십시오. 일반적인 링크 가능 레코드가없는 테이블 데이터를 한 테이블에서 다른 테이블로 업데이트하십시오. 가입하고 업데이트 할 수는 없습니다). 만 유사도 테이블이 동일한 구조의 것을공용 식별자가없는 한 테이블에서 다른 테이블로 데이터 업데이트

가 간단

  • 표 1A (100+ 항목 전송) 계속이다 KEY를 TAGNAME < - 어디 TAG1 '
  • 등 a.TagName
  • 표 1B : DS_KEY, 메이크업, 모델 < - 업데이트 데이터의 소스
  • 표 2A : KEY, 태그 이름 < - 어디 b.TagName 'TAG2'
  • 표 2B와 같은 : DS_KEY, 메이크업, 모델 < - - 업데이트 데이터의 대상

그래서

  • 표 1A : 123 TAG1
  • 표 1B : 123 Test1을, 모델 1
  • 표 2A : 456, TAG2
  • 표 2B : 456, NULL, NULL

내가 무엇을 가지고 :

--Query 1 
SELECT KEY, TagName, DS_KEY, Make, Model 
FROM Table1a 
JOIN Table1b 
ON Table1a.KEY = Table1b.DS_KEY 
Where TagName = 'Tag1' 

결과 (123, TAG1, 123, Test1을, 모델 1)

--Query 2 
SELECT KEY, TagName, DS_KEY, Make, Model 
FROM Table2a 
JOIN Table2b 
ON Table2a.KEY = Table2b.DS_KEY 
Where TagName = 'Tag2' 

결과 (456, TAG2, 456, NULL, NULL)

내가 작업 할 믹스를 돌려줍니다. 이 시점에서 Table2b를 업데이트하는 방법에 대해 당황스러워합니다. 그들과 합류 할 수 없다. (적어도 나는 어떻게 보이지 않는다!). 아마 UNION ALL? 정말 설정하는 약 100 레코드가, 내가 말했듯이 내가

Update Table2b 
    Set Table2b.Make = 
    (SELECT Make FROM Table1a 
    JOIN Table1b 
    ON Table1a.KEY = Table1b.DS_KEY) 
    FROM Table2a 
    JOIN Table2b 
    ON Table2a.KEY = Table2b.DS_KEY 
    Where Table2a.TagName = 'Tag2' 

할 필요가 없습니다 희망 쉬운 방법이있을 필요가있다처럼 그냥 보인다. 미리 감사드립니다. 간단하게 (그리고 피곤 해요!) 계속 질문을 바꾸려고 할 때 구문 오류를 용서하십시오. :)

+0

을 제공하는 것은 여기에서 작동하는 샘플입니다. SQL Fiddle을 사용한 적이 없기 때문에 이것이 작동하지 않는다면 알려주십시오! http://sqlfiddle.com/#!6/db2fa/4 –

+0

아무나 통찰력을 줄 수 있습니까? –

답변

1

일반적으로 한 테이블을 다른 테이블의 값으로 업데이트하려는 경우 테이블의 구문은 다음과 같습니다.

UPDATE TableA SET TableA.Value = TableB.Value 
FROM TableA INNER JOIN TableB ON TableA.Key = TableB.Key 
+0

그건 사실이야,하지만 그 사이에 조인하는 공통 키가 없기 때문에 내가 Table1a/Table1b 및 Table2a/Table2b 데이터에 합류 할 수있는 방법을 볼 수 없다. –

+0

글쎄,이 경우 귀하의 질문은 정말 두 테이블? 테이블의 내용에 대한 몇 가지 예와 레코드를 일치시키는 방법을 게시하십시오. 여기에있는 누군가가 적절한 JOIN 기준을 작성하는 데 도움이 될 수 있습니다. – Dan

+0

처음이 작업을 수행하므로이 링크가 작동되기를 바랍니다! http://sqlfiddle.com/#!6/db2fa/4 –

0

Tag1을 Tag2로 연결하려면 연결 테이블이 필요합니다. 다음과 같이 당신의 바이올린을 변경 : 당신이 스키마에 추가 :

create table linking_table 
(
    PK int not null primary key, 
    TagName_a varchar(50), 
    TagName_b varchar(50) 
) 
insert into linking_table (PK, TagName_a, TagName_b) 
values (1,'Tag1','Tag2') 

다음 쿼리 2가된다 :

SELECT Table2a.KEY1,Table2a.TagName,Table2b.DS_KEY, Table1b.Make, Table1b.Model 
FROM (Table2a 
JOIN Table2b 
ON Table2a.KEY1 = Table2b.DS_KEY) 
JOIN linking_table 
ON Table2a.TagName = linking_table.TagName_b 
JOIN (Table1a 
JOIN Table1b 
ON Table1a.KEY1 = Table1b.DS_KEY) 
ON Table1a.TagName = linking_table.TagName_a 

올바른 출력

관련 문제