Php Sql联接以跳过匹配的值

Php Sql联接以跳过匹配的值,php,sql,Php,Sql,我想加入两个表,如课程和课程分配给学生。 进程内表数据示例 课程表: id | name 1 | computer fundamental 2 | programming with c 3 | electrical engineering 3 | neural network 课程至学生表: course_id | std_id 1 | 1 2 | 2 3 | 1 那么对于std id 1:Result应该是 2:用c语言编程 4:神

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

课程表:

id | name
1  | computer fundamental
2  | programming with c
3  | electrical engineering
3  | neural network
课程至学生表:

course_id | std_id
1         | 1
2         | 2
3         | 1
那么对于std id 1:Result应该是

  • 2:用c语言编程
  • 4:神经网络
对于std_id 2,结果应为

  • 1:计算机基础
  • 3:电气工程
  • 4:神经网络
我该怎么做呢?

$std\u id=1;
$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
选择t1.course\u id,t1.course\u name 从表t1到表t2 其中t1.course\u id=t2.course\u id 和t2.std_id$std_id
我想您只是在两个表之间寻找一个
左连接。如果我正确阅读了您的预期输出,那么您希望识别某个给定学生当前未注册的课程

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.

您可以在

$std_id =1;

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

std id:1与课程id 1和3关联,但您需要2和4。也就是说,该课程不是该学生选择的,对吗?所以你想知道哪些课程没有分配给student@saddam Hossairy dude神经网络应该是4。是的,我想知道哪些课程没有分配给学生-Amit Guadines,但你的代码不起作用。我的完整sql代码是SELECT course。course\U name,course\U ENTROL\U student.std\U id FROM
course
LEFT JOIN course\U ENTROL\U student ON course\U ENTRUMER\U ENTRUMER ON course\U ENTRUMER\U ENTRUMER。course\U id=course.id更改代码并获取输出使用实际数据更新问题,格式为表格。然后,如果可以的话,我可以更新我的答案。谢谢你的评论,但我无法更新我的问题,因为我的分数不够。然后添加一个链接到包含实际数据的屏幕截图。课程表课程注册表感谢你检查我的问题。