Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 条件为null的左侧联接表,如果条件为null,则联接null列_Mysql_Sql - Fatal编程技术网

Mysql 条件为null的左侧联接表,如果条件为null,则联接null列

Mysql 条件为null的左侧联接表,如果条件为null,则联接null列,mysql,sql,Mysql,Sql,我有一个作业表,其中保存了老师在特定班级中创建的作业 分配表包含以下字段: idAssignment (primary key), classId (foreign key), title, assignmentDesc, dateDue 我还有一个assignmentsubmissions表,在该表中,该班的学生将提交的作业上传到作业中 assignmentsubmission表包含以下字段: assignmentSubmissionId (primary key), assign

我有一个
作业
表,其中保存了老师在特定班级中创建的作业

分配
表包含以下字段:

idAssignment (primary key), 
classId (foreign key), 
title, 
assignmentDesc, 
dateDue
我还有一个
assignmentsubmissions
表,在该表中,该班的学生将提交的作业上传到作业中

assignmentsubmission
表包含以下字段:

assignmentSubmissionId (primary key), 
assignmentId (foreign key), 
userId (foreign key), 
submission

基本上,我想将
作业提交
加入到
作业
中,让特定班级的学生查看他们已完成和未完成的作业

我尝试了许多不同的方法,但这是我当前的SQL命令:

SELECT * 
FROM assignment 
  LEFT JOIN assignmentsubmission 
    ON assignment.idAssignment = assignmentsubmission.assignmentId 
WHERE classId = 1234 
    AND ((userId = 1) OR (userId IS NULL))
学生可能尚未将提交内容上载到特定作业,因此在这种情况下,该
作业的
用户ID
将不存在,我想加入
null
行以提交
assignmentsubmission
。目前所发生的一切只是显示已提交的作业,但我希望返回所有作业,包括提交或空提交字段


我正在努力解决这个问题,因此非常感谢您的帮助。

您的思路是正确的,但是与学生的比较应该在
on
条款中:

SELECT a.*, (asu.userId IS NOT NULL) as completed_flag
FROM assignment a LEFT JOIN
     assignmentsubmission asu
     ON a.idAssignment = asu.assignmentId AND
        asu.userId = 1
WHERE a.classId = 1234 ;

此版本引入了表别名,使查询更易于编写和读取。请注意,所有列引用都是限定的——这意味着标识了原始表。

它们已完成和未完成。此信息存储在哪里?来自
用户
表的驱动器。这会给你一个学生还没有上传的所有作业。如果我理解正确的话。@nikhilsugandh如果一个学生上传了一份作业,它会被划入作业提交表中……非常感谢你的回答。我必须在最后加上(asu.userId为NULL或asu.userId=1)来解释学生提交或不提交的两种情况。如果您更新上述代码,我将接受正确答案。再次感谢你,只有你,我才能在这个问题上坚持很久@拉塞尔·布雷迪。我认为这些信息应该放在
选择中的一列中。啊,好的,我明白了,我现在正在工作,谢谢@GordonLinoff