2016-04-20 3 views
0

Я хотел бы получить количество элементов не в 3 таблицах. Третья таблица в другой базе данных и должна быть только для producer_ID 139. Run, как это я получаю 859 как счетчик:SQL left external join, чтобы найти не в 3 таблицах

 SELECT count(item.item_ID) as itemcount 
     FROM item 
     LEFT OUTER JOIN item_Subject 
      ON (item.item_ID = item_Subject.item_ID)   

     LEFT OUTER JOIN item_Category 
      ON (item.item_ID = item_Category.item_ID) 

     LEFT OUTER JOIN DATABASE2.dbo.item_SuperCategory 
      ON (item.item_ID = DATABASE2.dbo.item_SuperCategory.item_ID 
       and DATABASE2.dbo.item_SuperCategory.Producer_ID = 139) 

      WHERE item_Category.item_ID IS NULL 
      and item_Subject.item_ID IS NULL 
      and DATABASE2.dbo.item_SuperCategory.item_ID IS NULL 

Но если я достаньте DATABASE2.dbo.item_SuperCategory.Producer_ID = 139 и я получаю только 23. Я ожидал, что число будет уменьшено, а не увеличено. Что не так?

+1

Не могли бы вы прояснить вопрос, если вы получите 859 раньше и 23 после того, как оно уменьшилось, поэтому ничего не случилось. – Simon

+0

Я имею в виду с условием Producer_ID = 139 Я ожидал бы меньше. При условии 859, без условия есть только 23. –

+0

Мне нужно количество предметов, не найденных ни в одной из этих трех таблиц. –

ответ

0

Этот запрос подсчитывает элементы, которые имеют null itemID. Тот факт, что вы получаете 23, а не 859 после удаления manufacturer_id = 139, означает, что элементы с именем производителя_13 из 139 учитывают 836 ваших позиций в таблице DATABASE2.dbo.item_SuperCategory.

Помните, что вы ищете нулевые значения в таблице, объединенной слева, поэтому для дальнейшего фильтрации только одна таблица в предложении соединения может только увеличивать значения NULL.

Смежные вопросы