Tabellenschnittmenge

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Tabellenschnittmenge

Beitrag von ostpower (ForumUser / 48 / 1 / 0 ) »
Hallo zusammen,

ich hoffe ihr könnt mir helfen, da ich gerade auf dem Schlauch stehe. Also ich habe 2 Tabellen. Beide Tabellen haben eine Spalte Produktnummer. In Tabelle1 stehen Datensätze mit einer Produktnummer, die auch in Tabelle2 vorkommt. Es sollen alle Datensätze aus Tabelle1 gelöscht werden, die in Tabelle2 nicht vorkommen. Beispiel:
Tabelle1
pnr text
123 dfhdjfh
536 fdhfjdhf
346 dhfjdhf
233 fdhfjh

Tabelle2
pnr text
786 dhsjhd
346 dhfjdhf
987 dfhhfjhj
123 dfhdjfh

--> Hier sollen also aus Tabelle1 die Datensätze mit der pnr 536 und 233 gelöscht werden.

So jetzt bin am grübeln wie ich das machen kann. Mein Gedanke ist zuerst ein Loop auf Tabelle1 zu machen. Innerhalb diesen Loops dann einen weiteren Loop auf Tabelle2 mit der bedingung where t1.pnr = t2.pnr
Jetzt ist aber das problem, dass ja mit dieser bedingung genau das gegenteil erreicht wird, weil ich ja die datensätze aus tabelle1 löschen will wo die pnr NICHT gleich der pnr aus tabelle2 ist. Aber eine bedingung t1.pnr <> t2.pnr macht ja keinen sinn.
Wisst ihr einen geschickten weg?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Tabellenschnittmenge

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Hallo,
so etwa:
loop at Tabelle1.
read Tabelle2 mit key pnr.

if sy-subrc ne 0.
delete tabelle1.
endif.

endloop.

Gruß Wolfgang

Re: Tabellenschnittmenge

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Falls es sich um Datenbanktabellen handelt, und uns nur die Einträge interessieren, für die in Tabelle 2 ein Eintrag existiert, funktioniert auch sehr schön ein INNER JOIN beim SELECT.

Re: Tabellenschnittmenge

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
Moin,
wenn man alle Einträge einer Tabelle A haben möchte, die Nicht in Tabelle B enthalten sind, sollte man ein SUBQUERY einsetzen.
Beispiel:
Bild
in dem gezeigten Beispiel werden alle Einträge aus Tabelle Ztest3 in die interne Tabelle T1 abgelegt, die nicht in Ztest4 enthalten sind.
:) viel Freude damit

gruß Tron

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag (Insgesamt 2):
wreicheltostpower

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Tabellenschnittmenge

Beitrag von ostpower (ForumUser / 48 / 1 / 0 ) »
Hey super genau die gedankenhilfe hab ich gebraucht, aber ich hab jetzt noch ein kleines problem, wenn ich das so implementiere, dann kommt die fehlermeldung: "eine subquery darf keine into- oder order by-klausel..."
das ist ja blöd, dass ich kein into machen darf...

Re: Tabellenschnittmenge

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
Moin,
falls du den geklammerten Select meinst,
der erfüllt lediglich den Zweck "Wahr oder Falsch" zu bestimmen (ist ja auch Bestandteil der Where-Klausel).
Die Daten für die Löschung sammelt der "äußere" Select.
In Deinem Fall :
data t1 type table of tabelle1.

Select * from tabelle1 as f into t1
where not exsists ( select * from tabelle2 where pnr = f~pnr and text = f~text ).

if not t1[] is inital.
DELETE tabelle1 FROM TABLE t1.
endif.
gruß Tron
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Updates der Daten, Fehlermeldung
vor 23 Stunden von Egzon gelöst 1 / 50
Wie benutze ich COMMIT WORK richtig
vor 2 Tagen von msfox 17 / 431

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Updates der Daten, Fehlermeldung
vor 23 Stunden von Egzon gelöst 1 / 50
Wie benutze ich COMMIT WORK richtig
vor 2 Tagen von msfox 17 / 431

Unbeantwortete Forenbeiträge

Updates der Daten, Fehlermeldung
vor 23 Stunden von Egzon 1 / 50
Zwischensumme Adobe Forms
vor 5 Wochen von Lucyalison 1 / 269
Group Items auf einer Filterbar
letzen Monat von Bright4.5 1 / 321