2016-09-23 4 views
0

Ich habe Tabellen xx_org, xx_people und xx_asg. Die org_id ist gemeinsam zwischen xx_asg und xx_org und asg_id ist gemeinsam zwischen xx_people und xx_asg.löschen aus der Tabelle nach einer Bedingung in sql

Jetzt möchte ich diese Organisationen aus xx_org gelöscht werden, deren org_id nicht in xx_asg ist und die Personen-ID in xx_people, die einen Spaltenwert extra_info als 'ITEM_OTB' haben.

XX_ORG     XX_PEOPLE      XX_ASG 

ORG_ID     PERSON_ID      ASG_ID 
ORG_NAME    PERSON_NAME      ASG_NAME 
LEGAL_ENTITY   PERSON_NUMBER     ORG_ID 
         ASG_ID 
         EXTRA_INFO 

DELETE FROM XX_ORG WHERE 
ORG_ID NOT IN (SELECT DISTINCT ORG_ID FROM XX_ORG); 

Wie kann ich meine zweite Anforderung in diesem integrieren, die thsoe Menschen aus xx_person ist die extra_info als ‚ITEM_OTB‘ haben diejenigen org ids Menschen auch

Antwort

1

gelöscht werden sollte Wenn ich Sie richtig verstanden habe, Wir möchten alle Organisationen löschen, mit Ausnahme derjenigen, die in Asg vorhanden sind und Personen mit zusätzlichen Informationen haben, die gleich ITEM_OTB sind.

DELETE 
FROM  XX_ORG 
WHERE  ORG_ID NOT IN (
       SELECT  DISTINCT a.ORG_ID 
       FROM  XX_ASG a 
          INNER JOIN XX_PEOPLE p ON a.ASG_ID = p.ASG_ID 
       WHERE  p.EXTRA_INFO = 'ITEM_OTB'); 
Verwandte Themen