我的数据库中有上述表格。我首先从上一个PHP页面收到一个COURSE变量。我需要打印学生姓名列表以及尚未参加该课程的他们的student_Ids。对于上面的表,如果我收到的变量是A,那么我需要将Jake和他的student_id 一起打印。由于 Jake的学生ID为3,因此与课程A没有关联。
我尝试了以下查询,但该查询似乎无法正常工作,并且不确定哪里出错了
SELECT DISTINCT T1.name, T1.student_id
FROM Table 1 T1, Table 2 T2
WHERE T1.student_id = T2.student_id AND
T2.COURSE != :variable
ORDER BY T1.name ASC,
T1.student_id ASC
变量:A
答案 0 :(得分:1)
我很欣赏这看起来很老套,但是话又说回来,我也是...
SELECT DISTINCT x.*
FROM t1 x
LEFT
JOIN t2 y
ON y.student_id = x.student_id
AND y.course = 'a'
WHERE y.student_id IS NULL;
答案 1 :(得分:0)
有很多选择。例如,您可以使用子查询:
SELECT name, student_id FROM t1 WHERE student_id NOT IN (SELECT student_id FROM t2 WHERE course='A')
答案 2 :(得分:0)
您可以使用NOT EXISTS
查找未参加该课程的学生的列表:
SELECT * FROM T1
WHERE NOT EXISTS (
SELECT * FROM T2
WHERE T1.StudentId = T2.StudentId
AND T2.Course = :variable
)
ORDER BY name ASC, student_id