Joinen von Tabellen mit Ausschluss

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Joinen von Tabellen mit Ausschluss

Beitrag von abapi (ForumUser / 7 / 0 / 0 ) »
Hallo an alle,

ich habe mich gerade registriert und möchte mich kurz vorstellen.

Mein Name ist Rene und arbeite zur Zeit daran die Sprache ABAP zu erlernen.

Leider stehen mir meine bis jetzt erlernten SQL Kenntnisse im Weg.

Konkret habe ich eine Frage.

Ich möchte zwei Tabellen Joinen A+B und als Ergebnis nur die Inhalte angezeigt bekommen die nicht in B sind.

Beispiel:
A:
01
02

B:
01
03

Ergebnis:
02

In SQL eigentlich ganz einfach, aber in ABAP ein Problem??
Ich finde nicht die richtige Syntax.
danke schon mal für eure Hilfe.

Grüsse Rene

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


Re: Joinen von Tabellen mit Ausschluss

Beitrag von JHM (Top Expert / 1212 / 2 / 202 ) »
abapi hat geschrieben:Ich möchte zwei Tabellen Joinen A+B und als Ergebnis nur die Inhalte angezeigt bekommen die nicht in B sind.
Wieso JOIN? Okay ich bin nicht so konfirm mit SQL aber ein JOIN verbindet doch zwei Tabellen?

In ABAP würde ich die Anforderung mit einem SUBQUERY lösen:

Code: Alles auswählen.

SELECT *
FROM A
INTO irgenwas
WHERE NOT EXIST (SELECT *
                     FORM B
                     WHERE B~FIELD = A~FIELD).
Bei dem von dir genannten Beispiel wäre 02 das Ergebnis.
Gruß Hendrik

Re: Joinen von Tabellen mit Ausschluss

Beitrag von abapi (ForumUser / 7 / 0 / 0 ) »
Hy Hendrik

danke,

diese Variante hatte ich bis jetzt ausser acht gelassen.

Dennoch sollte ein Join möglich (Postgresql) aber halt eben wohl nicht in ABAP.

Ich melde mich nochmal mit einem go or nogo

viele Grüsse René

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Es würde theoretisch auch mit einem Join gehen.

Und zwar mit einem LEFT OUTER JOIN.
Du müsstest zumindest ein Feld des OuterJoins selectieren das niemals leer ist.
Dann könntest anschliessend mit einem "DELETE ITAB WHERE dieses_feld NE SPACE." alle nicht gewünschten rausschmeissen.
(leichte doppelte Verneinung drinnen)

Beitrag von JHM (Top Expert / 1212 / 2 / 202 ) »
Um die Theorie weiter zuführen:

Könnte man sich das:
DeathGuardian hat geschrieben:"DELETE ITAB WHERE dieses_feld NE SPACE."
nicht sparen, in dem die Abfrage mit in die Where-Bedingung des Select aufgenommen wird?

Beispiel:

Code: Alles auswählen.

SELECT *
INTO irgendwas
FROM a
LEFT JOIN b
WHERE b~field NE space.
Was ABAP draus macht weiß ich nicht, mir will gerade keine Tabelle einfallen wo ich sowas ausprobieren kann.

[edit]
Ende der Theorie:
Man bekommt eine Fehlermeldung:
In der WHERE-Bedingung dürfen keine Felder aus der rechten Tabelle
eines LEFT OUTER JOIN auftreten.
Zuletzt geändert von JHM am 15.11.2006 16:55, insgesamt 1-mal geändert.
Gruß Hendrik

Beitrag von abapi (ForumUser / 7 / 0 / 0 ) »
So

hab das gerade versucht umzusetzten
und es klappt mit where A NOT IN (sel***)

alles andere hat fehlermeldungen rausgeschmissen.

Aber mal ehrlich der Debugger von ABAP ist wohl nicht der Beste oder??

Ich hätte erwartet das (select irgenwas) = ( select irgendwas ) ist.
man beachte die leerzeichen!!!!!

So Programmiert man sich einen Wolf und überlegt und überlegt und letztendlich ist die Lösung einfach zwei Leerzeichen einzufügen.
einfach unerhört :lol:

nun gut man wächst mit den Erfahrungen

danke nochmal ich bin weiter mit dabei

grüsse

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
abapi hat geschrieben:Ich hätte erwartet das (select irgenwas) = ( select irgendwas ) ist.
man beachte die leerzeichen!!!!!

So Programmiert man sich einen Wolf und überlegt und überlegt und letztendlich ist die Lösung einfach zwei Leerzeichen einzufügen.
einfach unerhört :lol:
Jo, das sind noch so ein paar kleinere Unschönheiten von ABAP.
Hier will er Leerzeichen, dort will er keine Leerzeichen und woanders ist es ihm egal.
Aber mit der Zeit kennt man auch diese und macht es unbewusst gleich richtig.

Beitrag von aaaarrrggh (ForumUser / 8 / 0 / 0 ) »
Wieso JOIN? Okay ich bin nicht so konfirm mit SQL aber ein JOIN verbindet doch zwei Tabellen?

In ABAP würde ich die Anforderung mit einem SUBQUERY lösen:
Code:

SELECT *
FROM A
INTO irgenwas
WHERE NOT EXIST (SELECT *
FORM B
WHERE B~FIELD = A~FIELD).
Hatte das gleiche Prob. nur funst das mitm exist bei mir auch nicht wirklich...
Alle Kinder haben Haare - nur nicht Thorsten, der hat Borsten..

Seite 1 von 1

Vergleichbare Themen

7
Antw.
3955
Views
Zwei Tabellen joinen (für ALV)?
von k4lisp3r4 » 22.01.2007 16:33 • Verfasst in ABAP® für Anfänger
1
Antw.
2411
Views
Berechtigungsobjekt zum Ausschluss der HR-PA-Tabs über Se16
von AchimB » 15.06.2005 15:45 • Verfasst in Human Resources
3
Antw.
3091
Views
8
Antw.
17425
Views
Customizing-Tabellen vs. Anwendungs-Tabellen
von beterman » 02.11.2011 17:53 • Verfasst in SAP - Allgemeines
1
Antw.
3238
Views
SAP CML Tabellen
von nopp » 10.02.2007 18:23 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 9026
Meine Inbox
vor einer Woche von Rabea1103 1 / 6775
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7921
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13418

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

IF mit AND und OR
vor einer Woche von GastX 6 / 9026
Meine Inbox
vor einer Woche von Rabea1103 1 / 6775
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7921
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13418