| SQL DB2 Anfrage |

dbtutorials

Grünschnabel
Können Sie bitte schreiben wie das Forlgende geht? Falls möglich bitte SQL Code angeben.

Drei Tabellen sind gegeben:
. Studenten: {[MatrNr: int, Name: string, Semester: int]}
. hoeren: {[MatrNr: int, VorlNr: int]}
. Vorlesungen: {[VorlNr: int, Titel: string, WochenStd: int]}
Schreibe eine SQL Anfrage (wünschenswert in IBM-DB2 Syntax), die alle Studenten ausgibt, welche die gleichen Vorlesungen hoeren.

Vielen Dank im Voraus.
 
Da es sich sicher hierbei um eine Übungsaufgabe (eines Studiums!?) handelt und ich auch das Vergnügen hatte mich da durch zu wurschteln, kannst du dir ruhig ein paar Gedanken machen. Ausserdem ist das nicht schwer.

edit
im wesentlichen das gleiche prob wie hier:
http://www.tutorials.de/tutorials167694.html
(2. beitrag, letzter codeschnipsel, allerdings ist da auch ein kl. tippfehler dabei)
 
Zuletzt bearbeitet:
Re: wasted time - post

Hi wasted time,
so wie ich es verstanden habe hast Du das Folgende (in IBM-DB2 Syntax)vorgeschlagen:

SELECT s.Name, s.Semester
FROM Stundenten AS s
JOIN hoeren h ON h.MatrNr = s.MatrNr
JOIN Vorlesungen v ON v.VorlNr = h.VorlNr ;

Die obige Anfrage liefert aber die Studenten, die eine (existierende) Vorlesung hören. Und ich möchte eine Anfrage haben, die mir alle Studenten (egal im welchen Semester sie sind), die genau die gleichen Vorlesungen (gleiche Anzahl, gleicher Titel) hören, liefert. Ich habe mich Folgendes überlegt:

SELECT s.Name FROM Studenten AS s, hoeren AS h, Vorlesungen as v, (
SELECT v1.VorlNr
FROM Vorlesungen as v1, hoeren as h1, Studenten as s1
WHERE s1.MatrNr = h1.MatrNr
AND h1.VorlNr = v1.VorlNr
INTERSECT
SELECT v2.VorlNr
FROM Vorlesungen as v2, hoeren as h2, Studenten as s2
WHERE s2.MatrNr = h2.MatrNr
AND h2.VorlNr = v2.VorlNr
AND s2.MatrNr <> s1.MatrNr ) as t
WHERE s.MatrNr = h.MatrNr
AND h.VorlNr = v.VorlNr
AND v.VorlNr = t.VorlNr ;

Also scheint es doch nicht so einfach zu sein (zumindest für mich). Ich wäre dankbar, falls jemand schreibt ob die vorgeschlagene (die zweite hier: oben) Anfrage funktionsfähig und konzeptionell richtig ist, da ich sie momentan nicht testen kann. Falls Vorschläge oder Korrekturen gibt, sind sie herzlich willkommen.
 

Neue Beiträge

Zurück