2017-10-06 12 views
0

Utilisation d'un retour T-SQL CourseName d'un cours sans élèves.Requête T-SQL pour renvoyer une ligne sans utilisateurs connectés

StudentCourses: 

    StudentCourseID 
    StudentID 
    CourseID 



Courses: 

    CourseID 
    CourseName 

Je dois trouver ce que CourseName n'a pas d'étudiants dedans. Peut-être que mon cerveau est frit parce que je ne sais pas par où commencer. Aurais-je besoin d'une jointure gauche pour cela?

+1

Je vote pour fermer cette question hors sujet, car cette question montre sans effort, donc je suis downvoting il. –

+1

Votre [question] précédente (https://stackoverflow.com/questions/46595467/sql-three-tables-to-return-one-row) a mentionné les devoirs (ainsi que différents dbms). Si vous n'essayez pas, vous n'apprendrez pas. – SMor

Répondre

2

Utilisation de l'opérateur not exists serait probablement la meilleure façon de le faire:

SELECT coursename 
FROM course c 
WHERE NOT EXISTS (SELECT * 
        FROM studentcourses s 
        WHERE s.courseid = c.courseid) 
1

Vous pouvez le faire en utilisant LEFT JOIN - il retournera tous les cours et les étudiants correspondants. En utilisant la clause WHERE nous filtrons que ce cours qui ne sont pas étudiants:

SELECT coursename 
FROM course c 
LEFT JOIN studentcourses sc 
    ON c.courseid = sc.courseid 
WHERE sc.courseid IS NULL;