2015-03-04 3 views
1

У меня есть 2 таблицы, как показано ниже. Существует связь внешнего ключа между таблицами Activity и UOM.sql server joining table с нулевыми значениями с внешним ключом

Activity Table 
ActivityID UOMID ProcessNam 
--------------------------------------- 
1    2   Process1 
2    1   Process2 
3    null  Process3 

UOM Table 
UOMId   UOMText 
------------------------- 
    1   UOM1 
    2   UOM2 

Ниже приведен запрос и набор результатов я получаю

select a.ActivityID, u.UOMID, a.ProcessName, u.UOMText 
from Activity a 
left join UOM u on a.UOMID = u.UOMId 

ActivityID  UOMID  ProcessName  UOMText 
1    2   Process1  UOM2 
2    1   Process2  UOM1 

Можно ли получить дополнительную строку, как показано ниже; из таблицы операций, где UOMID имеет значение

3    null  Process3  null 

Я попытался изменить соединение, как показано ниже; но результаты не меняются

left join UOM u on a.UOMID=u.UOMId or (a.UOMID is null or u.UOMId is 
null) 

Заранее спасибо

+1

Странно, ваш первый запрос должен дать правильный результат. –

+0

В обеих таблицах есть столбец типа бит IsActive и где я проверяю, является ли столбец IsActive истинным для обеих таблиц. может ли это быть проблемой? –

+0

Ты единственный, кто может его протестировать. Кроме того, активность с NULL UOM ID будет логичной, чтобы быть неактивной. – CurseStacker

ответ

0
select a.ActivityID, u.UOMID, a.ProcessNam, u.UOMText 
from Activity a 
left join UOM u on a.UOMID=u.UOMId 

возвращает

ActivityID UOMID ProcessNam UOMText 
1   2  Process1 UOM2 
2   1  Process2 UOM1 
3   NULL Process3 NULL 

и

select a.ActivityID, u.UOMID, a.ProcessNam, u.UOMText 
from Activity a 
left outer join UOM u on a.UOMID=u.UOMId where a.UOMId is not null 

возвращает

ActivityID UOMID ProcessNam UOMText 
1   2  Process1 UOM2 
2   1  Process2 UOM1 
Смежные вопросы