2016-04-20 7 views
0

Ich möchte eine Anzahl von Elementen nicht in 3 Tabellen erhalten. Die dritte Tabelle ist in einer anderen Datenbank und soll nur für producer_ID 139. Run sein, da dies I 859 als Count:SQL linken äußeren Join zu finden, nicht in 3 Tabellen

 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 

Aber wenn ich die nehmen DATABASE2.dbo.item_SuperCategory.Producer_ID = 139 und laufe ich bekomme nur 23. Ich erwartete die Zahl reduziert werden, nicht erhöht. Was ist falsch?

+1

Könnten Sie bitte die Frage klären, ob Sie vor 859 erhalten und 23, nachdem es reduziert hat, so dass nichts falsch ist. – Simon

+0

Ich meine mit der Bedingung von Producer_ID = 139 würde ich weniger erwarten. Mit der Bedingung gibt es 859, ohne die Bedingung gibt es nur 23. –

+0

Ich benötige eine Zählung der Einzelteile, die nicht in irgendwelchen dieser 3 Tabellen gefunden werden. –

Antwort

0

Diese Abfrage zählt Elemente, die null itemID haben. Die Tatsache, dass Sie nach dem Entfernen der producer_id = 139 23 anstelle von 859 erhalten, bedeutet, dass Artikel mit einer producer_id von 139 für 836 Ihrer Artikel in der Tabelle DATABASE2.dbo.item_SuperCategory verantwortlich sind.

Denken Sie daran, dass Sie für NULL-Wert in einer links verknüpften Tabelle suchen, so weiter die Tabelle zu filtern, allein in der Join-Klausel kann nur NULL-Werte erhöhen.

Verwandte Themen