Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Datenbanken JOIN. Bitte meine Lösungsvorschläge ansehen:-)
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Datenbanken JOIN. Bitte meine Lösungsvorschläge ansehen:-)
 
Autor Nachricht
leyla_MUC
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 25.12.2007
Beiträge: 53

BeitragVerfasst am: 10 Jan 2008 - 22:52:36    Titel: Datenbanken JOIN. Bitte meine Lösungsvorschläge ansehen:-)

Hallo alle zusammen,

ich hätte da mal eine Frage bezüglich einer JOIN Anweisung

Die Fragen lauten folgendermaßen:

Relation R1 und Relation R2 haben jeweils 6 Elemente. Der Hauptschlüssel beider Relationen heisst IDENT.

a) Wieviel Elemente hat die Ergebnisrelation der SQL- Anweisung
SELECT * FROM R1, R2
Meine Antwort: 12

b) Wievile Elemente hat die Ergebnisrelation der SQL Anweisung
SELECT * FROM R1 JOIN R2 ON (IDENT)
Meine Antwort: Also hier habe ich die Aufgabe nicht wirklich
verstanden. Was "verursacht" eigentlich ....ON (IDENT).
Da beide Relationen R1 und R2 den Hauptschlüssel IDENT haben,
werden beide Tabellen mit JOIN "geklebt" und es kommt wieder 12
raus oder?

c) Wie kann man obiges Ergebnis erreichen, ohne ein JOIN zu verwenden?
Meine Lösung: SELECT * FROM R1, R2 WHERE R1.IDENT AND R2.IDENT

Vielen Lieben Dank im voraus Smile

Leyla
Argi
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.02.2007
Beiträge: 1404

BeitragVerfasst am: 11 Jan 2008 - 00:02:02    Titel:

Die erste Abfrage ergibt nicht 12, sondern das karthesische Produkt der Ergebnismengen der beiden einzelnen Tabellen, quasi R1 x R2.

Der Join verknüpft die beiden Tabellen, und zwar über den Schlüssel IDENT. Der ist damit nicht mehr nur der Hauptschlüssel der einen Tabelle, sondern auch der Fremdschlüssel der anderen. Und umgekehrt. ;ö)
Das Ergebnis ist also die Menge der über IDENT verbundenen Tabellensätze.

Bei c) solltest du mal überlegen, ob das AND da wirklich richtig aufgehoben ist.

Insgesamt dürfte es hilfreich sein zu schreiben, welchen SQL-Dialekt ihr verwendet (Oracle, MySQL, MS SQL und was nicht alles), damit man evtl. darauf eingehen kann oder weiß, wann man besser die Schnute hält. ;ö)


lg
leyla_MUC
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 25.12.2007
Beiträge: 53

BeitragVerfasst am: 11 Jan 2008 - 00:24:28    Titel:

Hallo Argi,

Also kartesisches Produkt ist mir jetzt klar. Hab irgendwie "komisch" gedacht.
Aber die Aufgabe b) verstehe ich trotzdem nicht.
Ich stelle mir jetzt 2 Tabellen vor mit 6 Elementen. Tabelle 1 hat in der letzten Spalte eben die IDENT Nr der 2. Tabelle als Fremdschlüssel.
Was heißt das jetzt im Endeffekt? Ich weiß doch garnicht wieviel Spalten angegeben sind. Da nur 6 Elemente stehen, dachte ich eine Spalte mit 6 Zeilen.

Stimmt c in dieser Art?

SELECT * FROM R1, R2 WHERE R1.IDENT = R2.IDENT

Ich studiere im Fernstudium WI und tue mich bei DB etwas schwer. Also dieses Join mag nicht in mein Hirn rein.
In der Literatur wird auf Oracle hingewiesen.

Danke und LG aus MUC

Leyla
Argi
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.02.2007
Beiträge: 1404

BeitragVerfasst am: 11 Jan 2008 - 18:31:06    Titel:

c) sieht gut aus nun.

2 Tabellen:
R1
ident Inhalt
0001 xxxx
0002 xxxy
0003 xxyy
0004 xyyy
0005 yyyy
0006 yxxx

R2
ident Inhalt
0001 aaaa
0002 aaab
0003 aabb
0004 abbb
0005 bbbb
0006 baaa

Wenn du dir die Ergebnismenge der ersten Anfrage anschaust, wird diese aus allen möglichen Tupeln bestehen. Bei dem Join kommen nur noch Tupel vor, die über den ident-Wert verbunden sind. Nehmen wir als Element einfach die Zeilen an.
Also käme als Ergebnismenge heraus:

0001 xxxx 0001 aaaa
0002 xxxy 0002 aaab
0003 xxyy 0003 aabb
0004 xyyy 0004 abbb
0005 yyyy 0005 bbbb
0006 yxxx 0006 baaa

Sechs Elemente, bzw Ergebnistupel, also richtig gedacht.

lg
leyla_MUC
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 25.12.2007
Beiträge: 53

BeitragVerfasst am: 11 Jan 2008 - 20:47:10    Titel:

Du bist ein Schatz Argi Smile

super, jetzt habe ich´s kapiert.

Vielen Dank

LG

Leyla
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Datenbanken JOIN. Bitte meine Lösungsvorschläge ansehen:-)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum