SELECT mit mehreren LEFT JOINS

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

SELECT mit mehreren LEFT JOINS

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
Hallo zusammen,

Wenn man mehrere Tabelle ( mehr als 2 Tabellen) mit einem LEFT JOIN macht, bekommt man ja öfters mehr Zeilen als die linke Tabelle hat!

Wie kann man das so machen, das genau so vielen Zeilen wie die LINKE Tabelle?
Mit einem DELETE ADJACENT DUPLICATES funktioniert es auch nicht ganz.

Kann man direkt im Select etwas machen? - DISTINCT funktioniert da leider nicht.

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


Re: SELECT mit mehreren LEFT JOINS

Beitrag von bowser (ForumUser / 4 / 0 / 0 ) »
Selektierst du alle Schlüsselfelder der linken Tabelle?
Wenn ja, könntest du DELETE ADJACENT DUPLICATES mit dem Zusatz COMPARING bei der internen Tabelle probieren, die das Ergebnis des Selects enthält. Denke das müsste klappen:

Code: Alles auswählen.

DELETE ADJACENT DUPLICATES FROM itab COMPARING keyfield1 keyfield2 keyfield3. 
Einfach alle Schlüsselfelder der linken Tabelle hinter COMPARING angeben.
Zuvor sollte die interne Tabelle nach den Schlüsselfeldern der linken Tabelle sortiert sein. Das geht ja direkt beim SELECT.

Re: SELECT mit mehreren LEFT JOINS

Beitrag von ABAPlerv (ForumUser / 84 / 24 / 1 ) »
bowser hat geschrieben:
17.09.2022 18:55
Selektierst du alle Schlüsselfelder der linken Tabelle?
Wenn ja, könntest du DELETE ADJACENT DUPLICATES mit dem Zusatz COMPARING bei der internen Tabelle probieren, die das Ergebnis des Selects enthält. Denke das müsste klappen:

Code: Alles auswählen.

DELETE ADJACENT DUPLICATES FROM itab COMPARING keyfield1 keyfield2 keyfield3. 
Einfach alle Schlüsselfelder der linken Tabelle hinter COMPARING angeben.
Zuvor sollte die interne Tabelle nach den Schlüsselfeldern der linken Tabelle sortiert sein. Das geht ja direkt beim SELECT.

Danke, das hatte ich eh auch zuvor. Aber gehts nicht irgendwie schöner? Etwa gleich im Select?

Re: SELECT mit mehreren LEFT JOINS

Beitrag von bowser (ForumUser / 4 / 0 / 0 ) »
ABAPlerv hat geschrieben:
17.09.2022 19:38
Danke, das hatte ich eh auch zuvor. Aber gehts nicht irgendwie schöner? Etwa gleich im Select?
Also ohne das konkrete Beispiel zu kennen wird es schwierig.
Eventuell klappt es mit einer komplizierten Abfrage unter Verwendung von Subquery und GROUP BY.
Aber das wäre aus meiner Sicht nicht schöner als DELETE ADJACENT DUPLICATES.

Re: SELECT mit mehreren LEFT JOINS

Beitrag von LeMinion (ForumUser / 20 / 1 / 6 ) »
Ich denke, das bekommst Du am saubersten mit einem Sub-Select hin. So etwas in der Art:

Code: Alles auswählen.

SELECT *
  FROM table1
  WHERE key1, key2, key3 IN (
    SELECT a~key1, a~key2, a~key3
      FROM table1 AS a
      LEFT JOIN table2 AS b
      ON b~key1 = a~key1
      AND b~key2 = a~key2
      LEFT JOIN table3 AS c
      ON c~key1 = a~key1
      AND c~key3 = a~key3
  )
  INTO TABLE @DATA(result).
Das, was Du beschreibst bzw. was Du gerne als Ergebnis hättest, ist potentiell nicht (so einfach) mit Joins zu erreichen, je nach Szenario.

Re: SELECT mit mehreren LEFT JOINS

Beitrag von A6272 (Specialist / 238 / 8 / 36 ) »
ABAPlerv hat geschrieben:
17.09.2022 16:33
Wie kann man das so machen, das genau so vielen Zeilen wie die LINKE Tabelle?
Das kann nur passieren, wenn Tabelle2(die rechte) die identischen Schlüsselfelder oder weniger hat als die linke Tabelle.

Sobald die Rechte Tabelle die identischen Schlüsselfelder + mindestens 1 weiteres hat wird der View immer mehr Zeilen ausgeben als die LINKE Tabelle.

Duplikate auf Schlüsselfelder der LINKE Tabelle löschen ist da nur bedingt eine Option, da du ggf. die falschen Einträge aus der rechten Tabelle vernichtest.

Da bräuchte man eine konkretere Problemstellung.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1884
Views
Select bei mehreren eindeutigen Werten
von mydigitalme » 07.06.2017 17:38 • Verfasst in ABAP® für Anfänger
5
Antw.
3238
Views
Selektieren nach mehreren Select-Options
von Thanatos82 » 14.09.2012 13:50 • Verfasst in ABAP Objects®
19
Antw.
5718
Views
Joins
von Neu_Im_SAP » 25.07.2011 13:15 • Verfasst in ABAP® für Anfänger
13
Antw.
1350
Views
SQL JOINS
von ABAPlerv » 18.05.2022 14:11 • Verfasst in ABAP® für Anfänger
2
Antw.
453
Views
SHIFT LEFT with space
von HH_ABAP » 23.02.2024 14:22 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.