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 / 296 / 30 / 37 ) » 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 / 1157 / 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 / 254 / 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 / 1157 / 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 / 254 / 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 / 1157 / 132 / 251 ) » Gestern 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 / 1086 / 17 / 235 ) » Gestern 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

Testdaten für verschiedene Module
vor 3 Stunden von deejey 2 / 14
Inner Join
vor 9 Stunden von Tron 9 / 273
Reisemanagement
vor 15 Stunden von jocoder 2 / 47
Objekte zu Transportauftrag aufnehmen gelöst
vor 18 Stunden von ichse18577 10 / 113

Unbeantwortete Forenbeiträge

Serviceauftrag Druck und Druckvorschau
vor 20 Stunden von christof 1 / 44
RFC_READ_TABLE mit RANGES selection
vor 20 Stunden von Tron 1 / 50
HR Formulareditor - Bedingten Seitenwechsel
vor 3 Wochen von Kerstin 1 / 322
Funktionsbaustein MASTERIDOC_CREATE_COND_A
vor 3 Wochen von SAP_ENTWICKLER 1 / 345