Abfrage mit entgegengesetzter functionalität des IN-Operators

Ich habe eine Abfrage, um den imagenamen zurückzugeben, der sich in einer der Ziel-IDs 1, 2 oder 3 befindet

SELECT AI.ACCESSORY_IMAGE_NAME, P.PART_CODE, PT.PUBLISHED_TARGET_ID, PT.TARGET_NAME FROM ASS.ACCESSORY_IMAGE AI JOIN PUB.PUBLISHED_ITEM PI ON PI.PUBLISHED_OBJECT_ID = AI.ACCESSORY_IMAGE_ID and PI.PUBLISHED_OBJECT_TYPE = 'ACCESSORY_IMAGE' JOIN PRD.ACCESSORY A ON A.ACCESSORY_ID = AI.ACCESSORY_ID JOIN PRD.PART P ON P.PART_ID = A.PART_ID JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID = PT.PUBLISHED_TARGET_ID AND PT.PUBLISHED_TARGET_ID in (1,2,3) WHERE AI.ACCESSORY_IMAGE_NAME = 'fire_ext.jpg' 

die als image in Ziel-ID 1 veröffentlicht wird

 ACCESSORY_IMAGE_NAME PART_CODE PUBLISHED_TARGET_ID TARGET_NAME ------------------------------------------------------------------------------- fire_ext.jpg PZ4AC-00EF0-EU 1 DEALER_ACCESS 

Aber ich möchte die Ziele zurückgeben, wo das image nicht veröffentlicht wird. In diesem Fall ist es 2 und 3

Erwartete Ausgabe

 ACCESSORY_IMAGE_NAME PART_CODE PUBLISHED_TARGET_ID TARGET_NAME ------------------------------------------------------------------------------- fire_ext.jpg PZ4AC-00EF0-EU 2 INTERNET fire_ext.jpg PZ4AC-00EF0-EU 3 INTRANET 

Der "NOT IN" -Operator gibt keine Zeilen offensichtlich zurück, da das image in Ziel 1 veröffentlicht wird.

   

Ändern Sie einfach den letzten Beitritt zu

 JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID <> PT.PUBLISHED_TARGET_ID 

Ich bin mir nicht sicher, was "veröffentlicht" bedeutet. Wenn es bedeutet, in der published_target Tabelle zu sein, dann verwenden Sie eine left join und überprüfen Sie auf keine Übereinstimmungen:

 SELECT AI.ACCESSORY_IMAGE_NAME, P.PART_CODE, PT.PUBLISHED_TARGET_ID, PT.TARGET_NAME FROM ASS.ACCESSORY_IMAGE AI JOIN PUB.PUBLISHED_ITEM PI ON PI.PUBLISHED_OBJECT_ID = AI.ACCESSORY_IMAGE_ID and PI.PUBLISHED_OBJECT_TYPE = 'ACCESSORY_IMAGE' JOIN PRD.ACCESSORY A ON A.ACCESSORY_ID = AI.ACCESSORY_ID JOIN PRD.PART P ON P.PART_ID = A.PART_ID LEFT JOIN PUB.PUBLISHED_TARGET PT ON PI.PUBLISHED_TARGET_ID = PT.PUBLISHED_TARGET_ID AND PT.PUBLISHED_TARGET_ID in (1,2,3) WHERE AI.ACCESSORY_IMAGE_NAME = 'fire_ext.jpg' and PT.PUBLISHED_TARGET_ID IS NULL; 

Die gleiche Idee würde für jeden Tisch halten.