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 / 161 / 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 / 305 / 33 / 39 ) » 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 / 1178 / 132 / 256 ) » 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 / 264 / 71 / 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 / 1178 / 132 / 256 ) » 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 / 264 / 71 / 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 / 1178 / 132 / 256 ) » 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 / 1094 / 18 / 239 ) » 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

Generierte Datei auf bestimmte Email Adresse versenden
vor 10 Stunden von M@atze! 4 / 65
Zweite Zeile vorhanden, dann überprüfen auf Feld Gleichheit
vor 14 Stunden von a-dead-trousers 5 / 111
benutzerdefinierter CSV Ausgabepfad
Gestern von a-dead-trousers 8 / 147
Mehrere Funktionsbausteine verwenden
Gestern von a-dead-trousers 2 / 100

Unbeantwortete Forenbeiträge

Transaktionen MEIS / VE01
Gestern von SAP_ENTWICKLER 1 / 51
Cl_gui_html_viewer Problem
vor 5 Tagen von YoeBoy 1 / 23
Namensänderung von PSP Elementen
vor einer Woche von jamyr 1 / 46
Generische Objekte in der Massenverarbeitung
vor einer Woche von TravellingEntwickler 1 / 116
Virtuelles System anlegen
vor einer Woche von ichse18577 1 / 92