2016-11-25 2 views
-3

Ich habe eine Tabelle. Sie haben Informationen über Studenten. Wie grundlegende Studentendatenbank. Ich habe natürlich Tabelle: course_id, COURSE_NAMEüber eine SQL-Abfrage

Student_course : student_num,course_id 

student: name,student_num 

Ein Student mehr als 1 Kurs nehmen. Wie Student_Course tab:

Student_Num Course 

1    2 

1    3 

2    2 

Meine Frage ist, können wir einen Kurs haben und es ist id = 2.I die Namen der Studenten finden wollen, die diesen Kurs nie nehmen. Ist das mit diesen Tabs möglich? Wenn möglich jemand helfen?

+1

Bitte markieren Sie die Frage mit der DB, die Sie mit 'mysql' oder' Oracle' verwenden. Bitte posten Sie Ihr Tabellenschema genau nicht wie etwas. Bitte zeigen Sie einige Beispieldaten, und zeigen Sie bitte, was Sie versucht haben. Das sieht nach deinen Hausaufgaben aus. Es ist nichts falsch, nach Hilfe zu suchen, aber bitte zeigen Sie zumindest das Minimum Ihrer Bemühungen. – Kacper

Antwort

1

Es ist möglich (und einfach). Die NOT IN Bedingung ist der wahrscheinlichste Kandidat für eine Lösung. Wenn die student_num in student_course-not null eingeschränkt ist (wie es sein soll), kann Ihre Anfrage so einfach sein wie

select student_name 
from student 
where student_id not in (select student_id 
          from student_course 
          where course_id = 2 
         ) 
; 

Nun, bevor Sie in dieser Hausaufgabe drehen, versuchen zu verstehen, wie es funktioniert. Wenn irgendein Teil davon verwirrend ist, schreibe zur Klärung zurück. Denken Sie zum Beispiel darüber nach, warum dies fehlschlägt, wenn student_id in student_coursenull sein kann. Wie würden Sie diese Lösung ändern, damit sie auch dann funktioniert, wenn student_idnull in der student_course Tabelle sein kann? Wenn Sie das einfach ohne nachzudenken einschalten, wird Ihnen das in keiner Weise zugute kommen.

+0

Uhh Ich war wirklich einfach. Ich musste mehr Zeit denken. Irgendwie. Können Sie einige Details zu Ihrer Frage geben :) Danke –

+0

@ MetehanAytaç - wenn Sie Beispieltabellen haben, ändern Sie 'student_id' in' '' '_' _ '_' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Führen Sie die Abfrage dann erneut aus. Siehst du, was passiert? Versuchen Sie herauszufinden, warum. (Hinweis: 'x NOT IN (a, b, c)' bedeutet 'x! = A UND x! = B UND x! = C' ... also was passiert, wenn man' a' in 'null' ändert?) – mathguy