Not logged in. · Lost password · Register

VPROF
Member since Oct 2017
58 posts
Subject: SQL Join-Arten
Hallo

Ich habe ne Frage zu den SQL Joins. Wann erkennt man dass man ein Right Join und ein Left Join verwendet? Ist das egal oder gibt's da ne Reihenfolge, die man ein halten muss?

z.b.

Film(FilmID , Name , Genre)
Schauspieler(SchauspielerId , Name )
spielt_in( SchauspielerId[Schauspieler] , FilmID[Film] , Rolle )
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
267 posts
R Left/Right (Outer) Join S

Left Join brauchst du, wenn du Alle Tupel aus R auswählen willst, ersteinmal unabhängig von der Joinbedingung. Alle Tupel Aus R werden Ausgewählt. Dort wo die Join-bedingung erfüllt ist, werden für die Attribute aus S die entsprechenden Werte eingetragen. Ist die Join-Bedingung nicht erfüllt stehen dort Null-Werte.

Beim Right Join Ist es genau umgekehrt. Es werden also alle Tupel aus S ausgewählt und es stehen evtl. Null-Werte in den Attributen aus R. (R Left Join S) entspricht (S Right Join R)

Abgesehen davon gibt es noch den Full (Outer) Join. Dieser ist Left und Right Join in einem. Es kommen also alle Tupel aus R und S vor und bei beiden stehen Null-Werte, wenn eine Join-Bedingung nicht erfüllt ist.

Neben den Outer Joins gibt es noch den (Inner) Join. Bei diesem tauchen nur die Werte in der Ergebnisstabelle auf, für die die Join-Bedingung erfüllt ist.
I hate Forumssignaturen
VPROF
Member since Oct 2017
58 posts
Aber wie sieht es dann in den Praxis bei den Anfragen aus ist das egal ob man ein Right Join oder Left join nimmt auf die bezügliche Tabelle (man weiß ja nicht was links oder rechts steht)  ? wenn nein was muss man dann beachten ?
This post was edited on 2018-12-12, 18:25 by VPROF.
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
267 posts
An sich ist es egal...

Zu beachten gilt halt, dass beim Left Join die Tabelle, aus der du Alle Tupel haben willst links steht und beim Right Join rechts.

Außerdem auch zu beachten, dass die Null-Werte auf der Join-Bedingung basierend eingefügt werden und erst danach die WHERE-Klausel ausgeführt wird.
I hate Forumssignaturen
VPROF
Member since Oct 2017
58 posts
Subject: Unteranfrage
wie erkennt man an Hand einer komplexen Anfrage wann man unteranfragen verwenden kann
wann erkennt man Gruppierung Attribute ?
Woran erkennt man dass man in der Having Klausel die gruppen noch mal einschränken muss?
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
267 posts
Unteranfragen braucht man eigentlich nie, da man stattdessen Joinen kann.

Was du mit "Gruppierung Attribute" meinst weiß ich nicht.

Ob du eine Having-Klausel nutzen willst hängt davon ab, ob du Bedingungen hast, die die aggregierten Werte betreffen.
I hate Forumssignaturen
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen