Inner Join

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

Inner Join

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo,

ich hätte jetzt mal eine totale Anfängerfrage und zwar zum Inner Join.

Er wäre ja wie folgt:

SELECT tib~insobject lfa~mahns
FROM ( TIBAN as tib inner join lfa1 as lfa on lfa~vtref = tib~insobject )
INTO CORRESPONDING FIELDS OF TABLE gt_ausgabe.

So nun zur Frage: Mit diesem "ON" bestimmt man, genau die richtigen Einträge zu finden, oder? Würde man da bei Gelegenheit nicht am besten immer den gesamten Primärschlüssel (soweit in beiden übereinstimmend vorhanden) mitnehmen? oder wie handhabt ihr das?

Vielen Dank

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


Re: Inner Join

Beitrag von RaCDigger (ForumUser / 42 / 4 / 7 ) »
Hallo L0w-RiDer,

da man bei einem Join inner/outer ja im Regelfall zwei unterschiedliche Tabellen verknüpft haben diese oft unterschiedliche Primärschlüssel, also kann man diesen gar nicht komplett übergeben.
Man gibt immer das mit um auf das gewünschte eindeutige Ergebnis zu kommen.
Z.B.
- MARA - MARC -> MATNR haben beide aber MARC hat noch WERKS.
- MARA - MVKE -> MATNR haben beide aber MVKE hat noch VKORG, VTWEG.

Gruß
Sven

Re: Inner Join

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
Wie RaCDigger geschrieben hat, durch die unterschiedlichen Schlüssel, macht es nur bedingt sinn.
Aber du hast insofern recht, dass man zumindest die gemeinsamen Schlüsselfelder immer angeben kann ( und vermutlich auch sollte, je nachdem wie genau du die Daten der jeweiligen Tabellen brauchst ).
Umso mehr Felder du in der ON-Bedingung eingibst, desto genauer und eingeschränkter wird deine Datenmenge aus dem Select.

Re: Inner Join

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Normalerweise gibt man hinter ON sämtliche Primärschlüsselfelder der zusätzlich rangebundenen Tabelle an (beim INNER und OUTER JOIN gleichermaßen). In seltenen Fällen kann es auch mal Sinn machen, den Primärschlüssel der angebundenen Tabelle nur unvollständig zu spezifizieren, allerdings muss man dann mit Kreuzprodukten rechnen:

Code: Alles auswählen.

Tabelle A:
  Key1 = 1 Key2 = 2
  Key1 = 1 Key2 = 3
Tabelle B:
  Key1 = 1 Key3 = 4
  Key1 = 1 Key3 = 5

Code: Alles auswählen.

SELECT Key1 Key2 Key3 FROM A JOIN B
  ON A~Key1 = B~Key1
würde als Ergebnis bringen:

(1,2,4)
(1,2,5)
(1,3,4)
(1,3,5)


In diesem Beispiels würde man also zu jeder Zeile von A jede Zeile von B ausgegeben bekommen, was 2*2=4 Ergebnisse bedeutet. Meist ist sowas unerwünscht.

Re: Inner Join

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Vlt hilft es dir es sich als View vorzustellen: so wie du die Tabellen dort verknüpfen würdest, so auch im Join

Re: Inner Join

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Wer mit Joins keine Erfahrung hat, wird diese aller Voraussicht nach auch mit Views nicht haben.

Re: Inner Join

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Views sind visuell einfacher zu erfassen und lassen sich einfacher testen so lange die Übung fehlt.

Re: Inner Join

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Vielleicht ist das eine Frage der Persönlichkeit: Ich war von Views noch nie sonderlich begeistert, allein schon deshalb, weil da die verwendeten Tabellen auf einem Tabreiter stehen, die Beziehungen dazwischen auf einem zweiten und die selektierten Felder auf einem dritten. Man sieht also immer nur ein Fragment des Ganzen, obwohl alles zusammenspielt. Bei einem SELECT mit JOIN habe ich alles übersichtlich beieinander; da kann ich mich viel besser orientieren.

Re: Inner Join

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Es gibt einen gravierenden Unterschied zwischen Join und dem Database View.
Es ist im View möglich Key-Tabellenfelder unterschiedlicher Größe zu joinen.
Das geht z.B. im Quickviewer nicht.
Ein Beispiel :
Ein Join zwischen Tabelle NAST und VBAK mit NAST-OBJKY und VBAK-VBELN als Schlüssel.
Ansonsten ist das ge-joine für mich einfach nach Erfordernis.

gruß Jens
003.png
001.png
000.png
<:: 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

Vergleichbare Themen

1
Antw.
1223
Views
Join mit Left Outer Join
von Rude1986 » 17.01.2021 19:53 • Verfasst in ABAP® für Anfänger
3
Antw.
3372
Views
Was ist ein Join?
von Schmarsi » 28.09.2010 11:37 • Verfasst in ABAP® für Anfänger
17
Antw.
7335
Views
JOIN
von robin1at » 22.02.2006 17:28 • Verfasst in ABAP® für Anfänger
3
Antw.
3085
Views
inner join
von dawns » 14.05.2007 15:49 • Verfasst in ABAP® für Anfänger
1
Antw.
1474
Views
inner join
von dimes » 20.01.2006 07:57 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 10 Stunden von black_adept gelöst 23 / 3642
User Exit EXIT_RQCPRM10_001
vor 11 Stunden von a-dead-trousers 2 / 240
Trennen Strasse und Hausnummer
vor 17 Stunden von payten 13 / 10571
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1292

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

Dialog-Container mit Toolbar/Status
vor 10 Stunden von black_adept gelöst 23 / 3642
User Exit EXIT_RQCPRM10_001
vor 11 Stunden von a-dead-trousers 2 / 240
Trennen Strasse und Hausnummer
vor 17 Stunden von payten 13 / 10571
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1292

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2835
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9420