Соединение SQL, включая NULL - PullRequest
0 голосов
/ 16 мая 2018

Использование SQL Server Management Studio 2016 (v 13.0).

У меня есть две таблицы с двумя разными ключами, которые я могу использовать для объединения, с тем уловом, что в обоих столбцах PK есть смешанные NULL:

Table 1          Table 2    

Acct1  App1      Acct2  App2    Product
-----------      ----------------------
1      A         NULL   A       Bed 
2      B         2      B       Sofa
3      C         3      NULL    Bed 
4      D         4      D       Bed 

Желаемый результат в объединенной таблице, включая только те, где Product = Bed:

Acct  App  Product
1     A    Bed 
3     C    Bed 
4     D    Bed 

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Хотя я согласен, что ответ @ d219 должен быть правильным решением, другой подход может использовать or в join, например:

select Acct1,App1,Product 
from table1 inner join table2
on App1=App2 or Acct1=Acct2 
where Product='Bed'

См. этот пост для обсуждения использования or join.

0 голосов
/ 16 мая 2018

Один из способов - сделать два отдельных оператора SELECT, используя каждый ключ, а затем UNION их, что-то вроде этого:

SELECT t1.Acct1, t1.App1, t2.Product
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.Acct1 = t2.Acct2
WHERE t2.Product = 'Bed'

UNION 

SELECT t1.Acct1, t1.App1, t2.Product
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.App1 = t2.App2
WHERE t2.Product = 'Bed'
...