mysql - 如何编写正确的查询以查找当前不在类(class)中的学生

标签 mysql sql database

我正在尝试找到可以注册类(class)的剩余学生。为此,我需要找到当前活跃的学生和当前不在类(class)中的学生。但是我认为我正在编写的查询不正确,因为当我运行查询时它一直显示一组空结果,我如何才能找到剩余的能够注册该类(class)的学生?

以下是当前查询:

SELECT  st.StudentId, StudentAlias, StudentForename, StudentSurname
FROM    Course c
        INNER JOIN Student_Course sc
            ON c.CourseId = sc.CourseId
        INNER JOIN Student st
            ON sc.StudentId = st.StudentId
WHERE   (c.CourseId = 1 AND
        sc.StudentId IS NULL
        AND st.Active = 1)
ORDER   BY st.StudentAlias

下面是表格:

学生:(所有学生的列表)

StudentId  StudentAlias  StudentForename  StudentSurname  Active
1          u09382        James            Smith           1
2          u83923        John             Brooks          1
3          u38292        Karen            Bradshaw        0
4          u20039        Chris            Cameron         1
5          u39399        Jane             Fields          1

类(class):(所有类(class)列表)

CourseId  CourseNo  CourseName
1         INFO121   ICT
2         BUS122    Business and Finance
3         ENG432    English Language

Student_Course:(参加相应类(class)的学生名单)

StudentId  CourseId
1          1
1          3
2          1
4          2
5          2

例如,如果我选择 CourseId = 1,那么它应该显示活跃但显然不在 CourseId = 1 中的学生,这意味着它应该显示这些以下学生是否有可能入读类(class):

4 - Chris Cameron
5 - Jane Fields

最佳答案

试试这个查询

SELECT s.studentId, s.Forename
FROM Student s
WHERE s.studentId NOT IN (SELECT studentId 
FROM  Student_Course c WHERE c.courseId = 1) AND s.Active = 1

内部子查询返回 courseId =1 的学生,在外部查询中我们过滤这些学生。

关于mysql - 如何编写正确的查询以查找当前不在类(class)中的学生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156000/

相关文章:

php - 将 mysql 与 php 和 ajax 一起使用,我想为此查询打印出一个字符串(而不是 0/1)

javascript - 从两个依赖的下拉列表中获取表单数据到 php

MySQL 每天计数类型

php - 如何使用 MySQL 和 PHP 获取列中的总和

sql - 如何将一列拆分为不同的列

mysql - 如何将行转换为没有具有唯一值的列的列?

php - 尝试将链接插入 MySql 循环

mysql - SQL - 分组依据上的用户相关行

php - Doctrine 原始 sql 和准备好的语句

file - 无法在具有自定义分隔符的配置单元中插入数据