Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

??natural ? full ? inner ? outer ? left ? right ??JOIN??

Empfohlene Antworten

Veröffentlicht

Hallo Forum,

wer schafft es mir die Sache mit den Joins so zu erklären das ich es verstehe?

ui jui jui...

hmmm warte lass mich mal überlegen..

was heisste den "to join" übersetzt

du hast zwei Tabellen in denen du Informationen suchst und über

gewisse bedingungen dir die Richtigen Ds raussuchen willst.

Da es sich dabei um eine raltionale DB handelt haben die jeweiligen Tabellen

beziehungen zueinander, d. h die Tabellen enthalten schlüssel die dei jeweiligen Ds

als eindeutig identifizieren.

das ganze versuchst in dem jeweiligen select auch so darzustellen, so dass du in dem

ergebniss deiner suche keine kreuzprodukte bekommst.

nehmen wir an du hast eine Tabelle mit Namen und noch eine mit Adressen.

In diesem Beispiel hat jeder name auch nur eine Adresse.

D.H für harry hirsch mit dem schlüssel "1" existiert in der anderen tabelle (adresse) auch

ein ds mit diesem Schlüssel 1 (z. b harryhirschstrasse 12).

Um jetz in dem ergebniss nicht harry hirsch mit hundert adressen (kreuzprodukt) zu bekommen musst du die

beiden Tabellen RICHTIG joinen. und das über die jeweiligen schlüssel.

select namen.name , adressen.str_hausnummer

from namen, adressen

where namen.schlüssel = adressen.schlüssel <--richtiger schlüssel join

and namen.name = 'harry hirsch' <-- indentifiezierender join, weil du ja auch nur harry hirsch haben willst

du bekommst hier einen ds mit namen und der jeweiligen adresse von harry :)

würdest du den letzen join weglassen würdest du alle ds bekommen aus beiden adressen

in der regel haben aber viele tabellen mehrere schlüssel um die relation anders darzustellen.

das sollte der inner join gewesen sien

so nehmen wir aber mal an es existiert keine adresse für harry , dann würde der obere select

KEIN ergebnis liefern. wenn du aber harry trotzdem angezeigt bekommen willst, dann

gibt es den outer join, der auch ein ergebniss liefert wenn eine bedingung null ist

select namen.name , adressen.str_hausnummer

from namen, adressen

where namen.schlüssel = adressen.schlüssel(+) <---outer join

and namen.name = 'harry hirsch'

ergebniss würde sein harry hirsch ohne adresse.

Man muss allerdings dazu sagen, dass diese schlüssel nicht null sein können.

naja ich hoffe ich habe ein BISSCHEN weitergeholfen..

Hi Naberius!

Ich habe unter "Datenbankbegriffe erklärt!" einen Link gepostet; hier ist er nochmal:

http://v.hbi-stuttgart.de/~riekert/lehre/db-kelz/

Auf der Seite werden alle Datenbankbegriffe erklärt - auch das mit den Joins (die Joins stehen auf der Seite als Links ganz unten)

Das wird dir sicherlich helfen

Gruß,

Technician

Danke für die ausführliche Erklärung und den Link!!

Ich glaube ich habe es wirklich kapiert.

Viele Grüße

Naberius

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.