PDA

View Full Version : [FRAGE] - NAtural Join


hm?
12-11-2004, 11:50
Hi!

kann mir vielleicht jemand anhand des bsp. 3 vom 19.11.2003 den natural join erklären? mit den erklärungen in buch und folien komm ich nicht weiter.
also, falls wer nicht die angaben hat:

F
--
91
12
36
42
= Tabelle X
J
--
91
36
57
48



F
--
57
42
91
42
36
42
= Tabelle Y
H
--
62
57
12
36
62
86


Ich soll nun Y JOIN X machen und rauskommen soll
F J H
-----------
42 48 36
42 48 57
42 48 86

Wie komm ich da bloss drauf?

sehrgewogen
12-11-2004, 12:08
ich hab mir's auch gerade angesehn und etwas gerätselt, aber dann ist es mir wie schuppen von den augen gefallen. die lösung liegt in der Y-tabelle, wo ja 3 mal 42 in der F-spalte steht und jede dieser 42er werte müssen mit der 42 aus der X-Tabelle gejoint werden.

das heißt nach dem natural join sieht die lösungstabelle erstmal so aus:
F J H
91 92 12
36 57 62
42 48 57
42 48 36
42 48 86

dann wird die F spalte noch in G umbenannt und nur die 42er-werte selektiert. und voila, du bist bei der lösung.

hm?
12-11-2004, 12:33
ich verstehs trotzdem nicht.
ich versteh den vorgang beim joinen nicht.
was muss ich übernehmen und was nicht?
wieso nehm ich z.b. den 12 aus F nicht , aber dafür die 91?
Und wie komm ich überhaupt auf J und H ?? wieso gibts z.b. in der J tabelle am Schluss 3mal die Zahl 48 und dafür keine 36?
Was muss ich womit joinen und was fällt warum weg und was bleibt?

Ich weiss , es ist knapp, aber kannst dus mir vielleicht trotzdem erklären?
Danke!!

sehrgewogen
12-11-2004, 12:54
ich versteh den vorgang beim joinen nicht.
was muss ich übernehmen und was nicht?
ok, dann halt nochmal von anfang an: bei einem natural join, wie er hier gegeben ist, sucht man ein attribut in den beiden tabellen, das mit einander übereinstimmt. man schreibt dann bei übereinstimmenden attributwerten die jeweiligen tabellenzeilen zusammen in einer zeile der ergebnistabelle.

in unserem beispiel haben wir folgendes: eine tabelle X mit den attributen F und J (durch die projektion ja eingeschränkt) und eine tabelle Y mit F und H. nachdem beide tabellen nur ein gleiches attribut (nämlich F) haben, orientieren wir uns daran. nun suchen wir heraus, wo die werte der beiden F-spalten überein stimmen. es gibt in X einmal den Wert 91 und in Y auch einmal, ok, dann schreibt man diese beiden zusammen :
F J H
91 91 12
der nächste wert 12 gibt es nur in F, deswegen bleibt er unberücksichtig. man müsste ihn nur bei einem outer join behandeln.

Und wie komm ich überhaupt auf J und H ??
in der angabe steht, dass man die ganze Y-tabelle (attribute f und h) mit der eingeschränkten X-tabelle (attribute f und j) joinen soll. das war die einschränkung bezüglich der spalten. die jeweiligen zeilenwerte ergeben sich dann wie gesagt aus den übereinstimmungen der f-werte.

wieso gibts z.b. in der J tabelle am Schluss 3mal die Zahl 48 und dafür keine 36?
ganz vorne in der angabe selektierst du nur die zeilen mit dem G-wert (also, was original F war) von 42. weil es in der tabelle X nur einmal den Wert 42 gab und der dazugehörige J-wert 48 war, bleibt das bei den 3 kombination gleich (die 3 kombinationen ergeben sich ja auch nur aus dem umstand, dass in Y drei joinmöglichkeiten mit 42 existieren).

Fat_Boy
12-11-2004, 13:38
Du schaust dir an, welche Zahlen in den beiden Fs gleich sind und die joinst du dann, sprich du hast in Y(F) die Zahl 57 aber in X(F) nicht. 57 fällt also weg. Dann nimmst du die erste 42 von Y und schreibst diese in dein F von der Ergebnistabelle. Dann schaust du, was bei der Zahl X(F) = 42 in der Spalte J steht. Hier steht 48. Die übernimmst du in deine Ergebnistabelle. Und dann schaust du noch, was beim ersten 42 von der Y-Tabelle in H steht (in unserem Fall 57 und übernimmst sie auch in deine Ergebnistabelle. Fertig ist die erste Zeile. Das machst du dann noch für alle weiteren Spalten von Y.


[edit] ok, zu spät...

hm?
12-11-2004, 13:59
Ich DANKE dir!!

Jetzt hab ich das endlich (!!!!!!!!!) kapiert!
vorallem wie man auf die Werte in J und H kommt !!!
Danke nochmals!

Wenn du auch heute Test hast, dann wünsch ich dir und allen, die das lesen,
VIEL GLÜCK!!!!!!!!!!!!!!!!

:)

hm?
12-11-2004, 14:01
P.s.:

Euch Beiden Danke :)

Fat_Boy
12-11-2004, 14:07
Wenn du auch heute Test hast, dann wünsch ich dir und allen, die das lesen,
VIEL GLÜCK!!!!!!!!!!!!!!!!

Danke, ebenfalls! :thumb:

sehrgewogen
12-11-2004, 14:08
keine ursache und das glück kann ich gut brauchen. bin ja mal gespannt, was gleich auf uns zukommt :)