Sql join跳过匹配的值

时间:2017-05-04 06:11:34

标签: php sql

我想加入两个课程,如课程和课程分配给学生。 在课程表数据示例

课程表:

id | name
1  | computer fundamental
2  | programming with c
3  | electrical engineering
3  | neural network

course_to_student表:

course_id | std_id
1         | 1
2         | 2
3         | 1

然后对于std id 1:结果应该是

  • 2:用c
  • 编程
  • 4:神经网络

和std_id 2结果应该是

  • 1:计算机基础
  • 3:电气工程
  • 4:神经网络

我该怎么做?

3 个答案:

答案 0 :(得分:0)

$std_id =1;

SELECT t1.course_id, t1.course_name
FROM table t1, table t2
WHERE t1.course_id = t2.course_id
    AND t2.std_id <> $std_id

答案 1 :(得分:0)

我认为您只是在两个表之间寻找LEFT JOIN。如果我正确阅读了您的预期输出,您想要确定当前注册的学生

的课程。

SELECT c.name
FROM course c
LEFT JOIN course_to_student s
    ON c.id = s.course_id
WHERE s.course_id IS NULL AND
      s.std_id = 1         -- or s.std_id = 2, etc.

答案 2 :(得分:0)

您可以使用NOT IN

$std_id =1;

SELECT *
FROM course
WHERE id NOT IN ( SELECT course_id 
                  FROM course_to_student 
                  WHERE std_id = $std_id )