SQL Joins einfach erklärt - simpleclub (2024)

SQL Joins einfach erklärt - simpleclub (1)

FächerSQL Joins einfach erklärt - simpleclub (2)Fachinformatiker*inSQL Joins einfach erklärt - simpleclub (3)LF 8: Daten systemübergreifend bereitstellenSQL Joins einfach erklärt - simpleclub (4)

SQL Joins

Inhaltsübersicht

SQL Joins einfach erklärt - simpleclub (5)

Ein Join ermöglicht die Verknüpfung mehrerer verschiedener Tabellen in einer Abfrage. Dabei wird zwischen fünf verschiedenen Arten unterschieden.

Erklärung

Vorab: Bei der Verknüpfung von zwei Tabellen kann es passieren, dass zwei Attribute den gleichen Namen haben. Zum Beispiel könnte es in einem Unternehmen bei den Tabellen "Mitarbeiter" und "Kunde" das Attribut Name geben.

Wenn du bei einer SQL Abfrage ein bestimmtes Attribut aus einer bestimmten Tabelle referenzieren möchtest, kannst du Tabellenname.Attributname schreiben ...

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

... oder eine Abkürzung für den Tabellennamen im FROM Teil definieren und dann Abkürzung.Attributname verwenden:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Cross-Join

Ein Cross-Join verbindet jedes Tupel von Tabelle A mit jedem Tupel von Tabelle B. In der Mathematik nennt sich dies Kartesisches Produkt.

In SQL sieht die explizite Anweisung so aus:

Alternativ kannst du die Anweisung cross join auch weglassen, das Ergebnis ist das Gleiche. SQL verwendet dann implizit den Cross-Join :

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Da ein Cross-Join immer alle Tupel mit allen Tupeln verknüpft, wird er nur selten verwendet.

Inner-Join

Der Inner-Join verknüpft nur zwei Tupel, wenn bei beiden Tupeln die Attributwerte eines Attributes gleich sind.

Ein Inner-Join kann in SQL mit dem inner join Befehl definiert werden. Statt inner join kannst du auch nur join schreiben, das ist für SQL das Gleiche.

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Alternativ kannst du auch die Join-Abfrage im WHERE Teil deiner Abfrage vornehmen:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Natural-Join

Der Natural-Join vergleicht automatisch Attribute, die den gleichen Namen haben. In der Ergebnistabelle wird dieses Attribut dann nur einmal ausgegeben.

In SQL kannst du den Natural-Join verwenden, indem du den natural join Befehl verwendest:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Outer-Join

Bisher wurde ein Tupel immer aus der Ergebnistabelle gestrichen, wenn die Attributwerte aus den beiden Tabellen nicht übereingestimmt haben. Wenn die nicht gewünscht ist, dann können ein Left-Outer-Join, Full-Outer-Join, oder Right-Outer-Join verwendet werden.

Ein Left/Full/Right-Outer-Join übernimmt alle Tupel aus der linken, beiden, oder rechten Tabelle, auch wenn diese keinen Join-Partner in der anderen Tabelle haben.

In SQL sehen die drei Outer-Join-Arten dann so aus:

Left-Outer-Join übernimmt alle Tupel aus der linken/ersten Tabelle, auch wenn diese keinen Join-Partner in der zweiten Tabelle haben:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Full-Outer-Join übernimmt alle Tupel aus beiden Tabellen, auch wenn sie keine Join-Partner in der anderen Tabelle haben:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Right-Outer-Join übernimmt alle Tupel aus der rechten/zweiten Tabelle, auch wenn diese keinen Join-Partner in der ersten Tabelle haben:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Self-Join

Bei einem Self-Join wird eine Tabelle mit sich selbst verknüpft und verschiedene Attribute innerhalb derselben Tabelle miteinander verglichen.

In SQL sieht die Anweisung dazu dann so aus:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Noch nicht genug?

In der App warten noch mehr Inhalte zu diesem Thema auf dich!

SQL Joins einfach erklärt - simpleclub (6)

SQL Joins einfach erklärt - simpleclub (7)

Auf dich warten weitere Inhalte zu diesem Thema.

Beispiel

Für die Beispiele sollen die beiden folgenden Tabellen Mitarbeiter und Kunde verwendet werden:

\underline{\text{MitarbeiterID}}MitarbeiterID\underline{\text{MitarbeiterID}}MitarbeiterID

\text{Name}Name\text{Name}Name

\overline{\text{Bedient}}Bedient\overline{\text{Bedient}}Bedient

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\underline{\text{KundeID}}KundeID\underline{\text{KundeID}}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Amir}Amir\text{Amir}Amir

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

Cross-Join

Der Cross-Join bildet das kartesische Produkt zwischen beiden Tabellen.

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{MitarbeiterID}MitarbeiterID\text{MitarbeiterID}MitarbeiterID

\text{Name}Name\text{Name}Name

\text{Bedient}Bedient\text{Bedient}Bedient

\text{KundeID}KundeID\text{KundeID}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{1}1\text{1}1

\text{Amir}Amir\text{Amir}Amir

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{1}1\text{1}1

\text{Amir}Amir\text{Amir}Amir

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

Da beim Cross-Join jedes Tupel mit jedem Tupel ohne Selektion kombiniert wird, findet diese Abfrage in der Praxis nur selten Anwendung.

Inner-Join

Eine Beispiel Aufgabe für einen Inner-Join könnte sein: Gib alle Paare von Mitarbeiter und Kunden an, bei denen ein Mitarbeiter einen Kunden bedient hat.

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{MitarbeiterID}MitarbeiterID\text{MitarbeiterID}MitarbeiterID

\text{Name}Name\text{Name}Name

\text{Bedient}Bedient\text{Bedient}Bedient

\text{KundeID}KundeID\text{KundeID}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

Natural-Join

WICHTIG! Für die Aufgabe zum Natural-Join, wird in der Tabelle Mitarbeiter das Attribut Bedient in KundeID UMBENANNT! Der Natural-Join vergleicht nur Attribute, die den gleichen Namen haben, daher muss hier das Attribut umbenannt werden!

Ein Beispiel für eine Aufgabe zum Natural-Join könnte die gleiche Anweisung wie beim Inner-Join sein, allerdings werden in der Ausgabetabelle die Attribute Bedient und KundeID zu einem Attribut zusammen gefasst.

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{MitarbeiterID}MitarbeiterID\text{MitarbeiterID}MitarbeiterID

\text{Name}Name\text{Name}Name

\text{KundeID}KundeID\text{KundeID}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

Outer-Join

Im Folgenden werden Beispiele für alle drei Arten des Outer-Joins aufgezeigt. Es werden wieder beide Anfangstabellen Mitarbeiter und Kunde verwendet, inklusiver aller Attributnamen vom Anfang.

Left-Outer-Join

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{MitarbeiterID}MitarbeiterID\text{MitarbeiterID}MitarbeiterID

\text{Name}Name\text{Name}Name

\text{Bedient}Bedient\text{Bedient}Bedient

\text{KundeID}KundeID\text{KundeID}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

Es sind alle Tupel der "linken" Tabelle Mitarbeiter enthalten, jedoch nur Tupel der "rechten" Tabelle Kunde, bei denen die Bedingung erfüllt ist.

Full-Outer-Join

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{MitarbeiterID}MitarbeiterID\text{MitarbeiterID}MitarbeiterID

\text{Name}Name\text{Name}Name

\text{Bedient}Bedient\text{Bedient}Bedient

\text{KundeID}KundeID\text{KundeID}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{null}null\text{null}null

\text{null}null\text{null}null

\text{null}null\text{null}null

\text{1}1\text{1}1

\text{Amir}Amir\text{Amir}Amir

Es sind alle Tupel der "linken" Tabelle Mitarbeiter enthalten, sowie alle Tupel der "rechten" Tabelle Kunde. Wenn die Bedingung nicht erfüllt ist und keine Zuordnung erfolgen konnte, werden die restlichen Attributwerte mit "null"-Werten aufgefüllt.

Right-Outer-Join

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{MitarbeiterID}MitarbeiterID\text{MitarbeiterID}MitarbeiterID

\text{Name}Name\text{Name}Name

\text{Bedient}Bedient\text{Bedient}Bedient

\text{KundeID}KundeID\text{KundeID}KundeID

\text{Name}Name\text{Name}Name

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{2}2\text{2}2

\text{Emira}Emira\text{Emira}Emira

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Lena}Lena\text{Lena}Lena

\text{null}null\text{null}null

\text{null}null\text{null}null

\text{null}null\text{null}null

\text{1}1\text{1}1

\text{Amir}Amir\text{Amir}Amir

Es sind nur Tupel der "linken" Tabelle Mitarbeiter (bei denen die Bedingung erfüllt ist) enthalten. Es sind jedoch alle Tupel der "rechten" Tabelle Kunde erhalten.

Wenn du alle Tabellen aller Join-Arten vergleichst, wird dir sicher auffallen, dass einige Join-Abfragen auf den Tabellen Mitarbeiter und Kunde zu identischen Ausgaben geführt haben. Grundsätzlich sind ALLE Join-Arten unterschiedlich, es kann jedoch vorkommen, dass sich die Ausgaben gleichen. Es muss deshalb jeder Join immer bewusst gewählt werden, da es sonst zu unerwünschten Tupeln in der Ergebnistabelle kommen kann.

Self-Join

Für den Self-Join benötigen wir eine andere Beispieltabelle. Die im Folgenden Teampartner genannte Tabelle modelliert eine Partnerarbeit in einer Klasse. Dabei hat jede Person maximal einen Teampartner.

\underline{\text{PersonenID}}PersonenID\underline{\text{PersonenID}}PersonenID

\text{Name}Name\text{Name}Name

\text{TeampartnerID}TeampartnerID\text{TeampartnerID}TeampartnerID

\text{1}1\text{1}1

\text{Peter}Peter\text{Peter}Peter

\text{null}null\text{null}null

\text{2}2\text{2}2

\text{Mia}Mia\text{Mia}Mia

\text{5}5\text{5}5

\text{3}3\text{3}3

\text{Andrea}Andrea\text{Andrea}Andrea

\text{4}4\text{4}4

\text{4}4\text{4}4

\text{Amir}Amir\text{Amir}Amir

\text{3}3\text{3}3

\text{5}5\text{5}5

\text{Elena}Elena\text{Elena}Elena

\text{2}2\text{2}2

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\text{PersonenID}PersonenID\text{PersonenID}PersonenID

\text{Name}Name\text{Name}Name

\text{TeampartnerID}TeampartnerID\text{TeampartnerID}TeampartnerID

\text{PersonenID}PersonenID\text{PersonenID}PersonenID

\text{Name}Name\text{Name}Name

\text{TeampartnerID}TeampartnerID\text{TeampartnerID}TeampartnerID

\text{2}2\text{2}2

\text{Mia}Mia\text{Mia}Mia

\text{5}5\text{5}5

\text{5}5\text{5}5

\text{Elena}Elena\text{Elena}Elena

\text{2}2\text{2}2

\text{3}3\text{3}3

\text{Andrea}Andrea\text{Andrea}Andrea

\text{4}4\text{4}4

\text{4}4\text{4}4

\text{Amir}Amir\text{Amir}Amir

\text{3}3\text{3}3

\text{4}4\text{4}4

\text{Amir}Amir\text{Amir}Amir

\text{3}3\text{3}3

\text{3}3\text{3}3

\text{Andrea}Andrea\text{Andrea}Andrea

\text{4}4\text{4}4

\text{5}5\text{5}5

\text{Elena}Elena\text{Elena}Elena

\text{2}2\text{2}2

\text{2}2\text{2}2

\text{Mia}Mia\text{Mia}Mia

\text{5}5\text{5}5

Wenn eine Person aus der Tabelle Teampartner einen Teampartner hat, so wird diese Person zusammen mit dem Teampartner als ein Tupel in der Ergebnistabelle ausgegeben. Hat eine Person keinen Teampartner (hier nur Peter), so ist diese Person auch nicht Teil der Ergebnistabelle.

Nächstes Thema:

Entities im ER-Modell

Weiter

SQL Joins einfach erklärt - simpleclub (8)

SQL Joins einfach erklärt - simpleclub (2024)

References

Top Articles
MTailor: What Happened After Shark Tank? | BizzBucket
MTailor Shark Tank Update | MTailor Net Worth 2024 | SEOAves
$4,500,000 - 645 Matanzas CT, Fort Myers Beach, FL, 33931, William Raveis Real Estate, Mortgage, and Insurance
Cappacuolo Pronunciation
UPS Paketshop: Filialen & Standorte
Unit 30 Quiz: Idioms And Pronunciation
Here are all the MTV VMA winners, even the awards they announced during the ads
Kansas Craigslist Free Stuff
Strange World Showtimes Near Cmx Downtown At The Gardens 16
Aita Autism
Cooking Fever Wiki
RBT Exam: What to Expect
House Party 2023 Showtimes Near Marcus North Shore Cinema
Playgirl Magazine Cover Template Free
Mary Kay Lipstick Conversion Chart PDF Form - FormsPal
7543460065
Lancasterfire Live Incidents
Beebe Portal Athena
Star Wars: Héros de la Galaxie - le guide des meilleurs personnages en 2024 - Le Blog Allo Paradise
Transfer and Pay with Wells Fargo Online®
10-Day Weather Forecast for Santa Cruz, CA - The Weather Channel | weather.com
Equibase | International Results
Directions To Advance Auto
Walgreens San Pedro And Hildebrand
Missouri Highway Patrol Crash
Webcentral Cuny
Masterkyngmash
Move Relearner Infinite Fusion
Wat is een hickmann?
Yale College Confidential 2027
Hobby Lobby Hours Parkersburg Wv
Rgb Bird Flop
Ridge Culver Wegmans Pharmacy
Fastpitch Softball Pitching Tips for Beginners Part 1 | STACK
Delta Rastrear Vuelo
Barrage Enhancement Lost Ark
Personalised Handmade 50th, 60th, 70th, 80th Birthday Card, Sister, Mum, Friend | eBay
Sadie Sink Doesn't Want You to Define Her Style, Thank You Very Much
Are you ready for some football? Zag Alum Justin Lange Forges Career in NFL
Stafford Rotoworld
Kazwire
Pensacola Cars Craigslist
All Characters in Omega Strikers
Trivago Sf
Tripadvisor Vancouver Restaurants
The Attleboro Sun Chronicle Obituaries
Cocorahs South Dakota
Courtney Roberson Rob Dyrdek
Port Huron Newspaper
Chubbs Canton Il
RubberDucks Front Office
Greg Steube Height
Latest Posts
Article information

Author: Tish Haag

Last Updated:

Views: 5996

Rating: 4.7 / 5 (47 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Tish Haag

Birthday: 1999-11-18

Address: 30256 Tara Expressway, Kutchburgh, VT 92892-0078

Phone: +4215847628708

Job: Internal Consulting Engineer

Hobby: Roller skating, Roller skating, Kayaking, Flying, Graffiti, Ghost hunting, scrapbook

Introduction: My name is Tish Haag, I am a excited, delightful, curious, beautiful, agreeable, enchanting, fancy person who loves writing and wants to share my knowledge and understanding with you.