2016-04-24 5 views
2

Ich versuche zu überprüfen und Einfügen von Datensatz von ITEM zu MIBOMD. Ich möchte nur, wenn Einzelteile in ItemID und partid Felder in ITEM Tabelle in MIITEM TabelleWie kann ich mehrere WHERE-Bedingungen hinzufügen

ich den Code unten verwendet existieren einzufügen, aber ich habe diese Fehlermeldung

Msg 4145, Ebene 15, Status 1, Leitung 22 Ein Ausdruck eines nicht-booleschen Typs, der in einem Kontext angegeben ist, in dem eine Bedingung erwartet wird, in der Nähe von 'ODER'.

 USE [MITESTCO] 
    GO 
     INSERT INTO MIBOMD(bomItem, bomRev, bomEntry, partId, lead) 
    SELECT ItemID, rev, bomEntry, partid, qty 
    FROM ITEM WHERE (partid OR ItemID) IN (SELECT ItemId FROM MIITEM); 

Antwort

3

Sie werden die WHERE Klausel von einem OR Zustand zu zwei aufzuschlüsseln müssen.

USE [MITESTCO]; 
GO 

INSERT INTO [MIBOMD] 
    ([bomItem], [bomRev], [bomEntry], [partId], [lead]) 
SELECT [ItemID], [rev], [bomEntry], [partid], [qty] 
FROM [ITEM] 
WHERE [partid] IN (SELECT [ItemId] FROM [MIITEM]) 
OR [ItemID] IN (SELECT [ItemId] FROM [MIITEM]); 
3

Ein anderer Weg, dies zu tun, ist mit EXISTS.

Dadurch wird vermieden, die Sub-Query mit zweimal

INSERT INTO [MIBOMD] 
      ([bomItem],[bomRev],[bomEntry],[partId],[lead]) 
SELECT [ItemID],[rev],[bomEntry],[partid],[qty] 
FROM [ITEM] I 
WHERE EXISTS (SELECT 1 
       FROM [MIITEM] M 
       WHERE M.ItemId IN (I.partid, I.ItemID))