SQL Правое соединение возвращает пустые строки - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь присоединиться к таблицам ниже:

Таблица A:

Type1   Type2   ID  Object  Location
Sample  Dummy   1   X111    111222
Sample  Dummy   2   X333    333444
Sample  Dummy   2   X333    555666
Sample  Red     1   X222    666777
Test    Red     1   X222    666777
Test    Red     1   X222    666777

Таблица B:

Source  Type2   ID  Object  Logged
SR1     Dummy   1   X111    17
SR1     Dummy   2   X333    1
SR1     Red     1   X222    12
SR2     Dummy   1   X111    9
SR2     Dummy   2   X333    9
SR2     Red     1   X222    20

Мой SQL код:

SELECT B.Source, B.Type2, B.ID, B.Object, B.Logged, A.Location 
FROM A RIGHT JOIN B ON 
    A.Type1='Sample' AND 
    A.Type2=B.Type2 AND 
    A.ID=B.ID AND 
    A.Object=B.Object 
WHERE B.Source='SR2'

Я ожидаю следующих результатов:

Source  Type2   ID  Object  Logged  Location
SR1     Dummy   1   X111    17      111222
SR1     Dummy   2   X333    1       333444
SR1     Dummy   2   X333    1       555666
SR1     Red     1   X222    12      666777

Но вместо этого я получаю следующее:

Source  Type2   ID  Object  Logged  Location
SR1     Dummy   1   X111    17      111222
SR1     Dummy   2   X333    1       -
SR1     Dummy   2   X333    1       -
SR1     Red     1   X222    12      666777

Что не так с моим кодом? Пожалуйста, помогите.

1 Ответ

0 голосов
/ 26 мая 2020
За

LEFT JOIN гораздо легче следить. Проблема заключается в фильтрации по b.Type1 = 'Sample'. Насколько я могу судить, это не нужно:

SELECT B.Source, B.Type2, B.ID, B.Object, B.Logged, A.Location 
FROM B LEFT JOIN
     A 
     ON A.Type2 = B.Type2 AND 
        A.ID = B.ID AND 
        A.Object = B.Object 
WHERE B.Source = 'SR2';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...