不确定如何为以下任务构建SQL查询

问题描述 投票:0回答:3

Tables

我在我的数据库中有上面提到的表。我首先从我以前的PHP页面收到一个COURSE变量。我需要打印学生姓名列表以及未参加课程的student_Ids。对于上面的表格,如果我收到的变量是A,那么我需要打印Jake和他的student_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

mysql sql
3个回答
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;

0
投票

有很多选择。例如,您可以使用子查询:

SELECT name, student_id FROM t1 WHERE student_id NOT IN (SELECT student_id FROM t2 WHERE course='A')

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
© www.soinside.com 2019 - 2024. All rights reserved.