Select auf zwei Tabellen

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

Select auf zwei Tabellen

Beitrag von mip (ForumUser / 48 / 0 / 2 ) »
Hallo,

folgendes Problem: 2 Tabellen (vbak, vbpa). In beiden ist die Belegnummer der Schlüssel (vbeln). In der vbpa gibt es pro Belegnummer mehrere Einträge mit unterschiedlichen Partnerrollen (parvw). Ich möchte jetzt alle Belege rausfinden, die in der vbak vorkommen aber keinen Eintrag in der vbpa haben mit vbpa-parvw = 'VE'.

Danke für Eure Hilfe.

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



Beitrag von mip (ForumUser / 48 / 0 / 2 ) »
Super, mit dem folgenden Code funktionierts. Mit einem Left Outer Join hab ich es nicht hinbekommen. Geht so was noch perfomanter?

SELECT *
FROM vbak as a
WHERE NOT EXISTS ( SELECT * FROM vbpa as b
WHERE parvw EQ 'VE'
AND b~vbeln = a~vbeln )

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Ist das denn nicht schnell genug?

Beitrag von mip (ForumUser / 48 / 0 / 2 ) »
hier läuft es schnell und damit komm ich auch weiter, danke für die schnelle Hilfe! Aber von meinem Verständnis ist das keine "optimale" Lösung . Dies führt zu jedem Eintrag in a zu einem Select in b .. hat man in a 1000 belege und in b ebenfalls macht das schon 1Mio Vergleiche.

Beitrag von index (ForumUser / 17 / 0 / 0 ) »
Hi

ich glaub es geht auch so

SELECT distinct a~vbeln
FROM vbpa as b
left join vbak as a
on b~vbeln = a~vbeln
into table test
WHERE parvw ne 'VE' .

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
mip hat geschrieben:hat man in a 1000 belege und in b ebenfalls macht das schon 1Mio Vergleiche.
Das stimmt ja nicht.
Es wird ja für jeden Beleg einzeln geprüft. Das heisst, du hast einen select für einen Beleg in der VBAK und machst dazu einen Select in der VBPA. Ausserdem passt "Vergleich" bei einer Datenbankabfrage nicht so ganz. Denn dann gehst du von einem "Full table scan" aus.
also: durchlaufe alle Belege in der VBAK, bis du meinen Beleg gefunden hast. Durchlaufe dann alle Belege in der VBPA bis du meinen Beleg gefunden hast. So ist das ja aber nicht. Mit der Belegnummer machst du einen direkten Zugriff. Schneller gehts dann nicht.

@index: Dein join funktioniert leider nicht...! Denn du prüfst mit dem Join ja nicht, ob der Eintrag VE vorhanden ist, oder nicht, sondern selektierst stattdessen alles, was nicht VE ist; also WE, AG, RE, RG, Z1, Z2, SP etc... Egal, ob VE zum Beleg vorhanden ist, oder nicht.

Beitrag von mip (ForumUser / 48 / 0 / 2 ) »
Hallo ewx,

danke für Deine Erklärung.

Schönes WE!

Gruß mip

Seite 1 von 1

Vergleichbare Themen

8
Antw.
1421
Views
Select über zwei Tabellen
von Michson1982 » 09.05.2019 13:32 • Verfasst in ABAP® für Anfänger
10
Antw.
4162
Views
Ausgabe von zwei Tabellen mit ALV
von Katinka » 15.09.2005 12:54 • Verfasst in ABAP® Core
3
Antw.
359
Views
Operieren mit zwei Tabellen
von LisaKremer » 22.01.2020 17:57 • Verfasst in ABAP® für Anfänger
7
Antw.
3526
Views
Zwei Tabellen joinen (für ALV)?
von k4lisp3r4 » 22.01.2007 16:33 • Verfasst in ABAP® für Anfänger
9
Antw.
5429
Views
Daten aus zwei versch. Tabellen
von bohne » 01.03.2006 16:28 • 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.