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 (Specialist / 158 / 23 / 1 ) » 6. Nov 2019 09:47

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


Re: Inner Join

Beitrag von RaCDigger (ForumUser / 29 / 2 / 7 ) » 6. Nov 2019 15:08

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 / 297 / 30 / 38 ) » 7. Nov 2019 07:39

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 / 1163 / 132 / 251 ) » 7. Nov 2019 08:25

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 / 256 / 69 / 20 ) » 7. Nov 2019 11:06

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 / 1163 / 132 / 251 ) » 7. Nov 2019 15:41

Wer mit Joins keine Erfahrung hat, wird diese aller Voraussicht nach auch mit Views nicht haben.

Re: Inner Join

Beitrag von deejey (Specialist / 256 / 69 / 20 ) » 7. Nov 2019 17:12

Views sind visuell einfacher zu erfassen und lassen sich einfacher testen so lange die Übung fehlt.

Re: Inner Join

Beitrag von DeathAndPain (Top Expert / 1163 / 132 / 251 ) » 12. Nov 2019 14:05

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 / 1088 / 17 / 236 ) » 12. Nov 2019 18:15

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

Aktuelle Forenbeiträge

SELECT + LOOP: Geschwindigkeit?
vor einer Stunde von DeathAndPain 6 / 30
STMS via Coding aktualisieren
vor 2 Stunden von ichse18577 6 / 59
ILM SAP HCM - Löschen von Daten
vor 3 Stunden von Flashtie 3 / 45
Smartforms Main-Fenster mit dynamischer Größe
vor 4 Stunden von a-dead-trousers 7 / 112

Unbeantwortete Forenbeiträge

PopUp Verhalten im window_manager create_decision_popup
vor 22 Stunden von Kokolores 1 / 27
Verpacken vorhandener HUs an Auslieferungen
vor 3 Tagen von Trilla_CB 1 / 9
RFC_READ_TABLE mit RANGES selection
vor 3 Tagen von Tron 1 / 73
HR Formulareditor - Bedingten Seitenwechsel
vor 3 Wochen von Kerstin 1 / 417