Определите, какие ключи должны использовать 2 таблицы для объединения в SQL Server - PullRequest
0 голосов
/ 26 марта 2019

У меня есть две таблицы:

Table1:

User-ID    Country

1111    USA 
2222    Brazil
3331    USA
3332    Korea
3333    Korea
3333    USA
3333    France
4444    UK

Table2:

User-ID   Country  Region

1111      USA       NA
2222      Brazil    SA
3331      Korea     A
3332      Korea     A
3333      N/A       N/A
3330      France    E
4444      UK        E

Я хотел бы объединить обе таблицы, используя «ID пользователя» в качестве общего ключа, за исключением.

Я хочу, чтобы результат был похож на то, что когда идентификатор пользователя равен «3333», я бы хотел, чтобы вместо «Страна» использовался общий ключ ТОЛЬКО.

Я попробовал следующий ncode, который, на мой взгляд, звучал логично, но не дал желаемого результата:

Select T1.User-ID, T1.Country, Case When T1.User-ID ='3333' AND T1.Country = 
       T2.Country THEN T2.Region ELSE T2.Region END

From Table1 as T1 Left Outer Join
     Table2 as T2 ON T1.User-ID = T2.User-ID OR T1.Country = T2.Country

Я пробовал несколько других подходов, но безуспешно, результаты, которые я получу, будут следующие:

  • НЕДЕЙСТВИТЕЛЬНЫЙ регион для идентификатора пользователя 3333
  • Дублированные строки для USer-ID 3333 Хотя записи, отличные от 3333, вернут ожидаемые результаты.

1 Ответ

1 голос
/ 26 марта 2019

Похоже, вам нужно дополнительное условие в предложении ON:

From Table1 T1 Left Outer Join
     Table2 T2
     ON T1.UserID = T2.UserID AND
        (T1.UserId <> 33333 OR T1.Country = T2.Country)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...