Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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记录_Mysql - Fatal编程技术网

选择集合中缺少子记录的MYSQL记录

选择集合中缺少子记录的MYSQL记录,mysql,Mysql,情况是这样的:如果有人修了一门课,他们必须修一套其他的课程作为补充。如何识别学生尚未学习的课程 这是我的桌子: tbl_course_dependency_lookup courseid dependentid 133 57 133 55 133 71 167 57 167 99 tbl_user_course_completed userid courseid 12 1

情况是这样的:如果有人修了一门课,他们必须修一套其他的课程作为补充。如何识别学生尚未学习的课程

这是我的桌子:

tbl_course_dependency_lookup
courseid    dependentid
133          57
133          55
133          71
167          57
167          99

tbl_user_course_completed
userid      courseid
 12         133
 12          55
 13          71
 14         133
 15         100
以下是应返回的数据:

userid      courseid      dependentid
12          133           57
12          133           71
14          133           55
14          133           57
14          133           71

受抚养人是补充课程的参考?那么您想确定用户未完成的课程?例如:如果用户已完成课程“133”而不是其补充课程,则查询应返回“57”,因为该用户未完成课程?dependentid是其他课程的id?是否要标识课程或依赖项,或两者都标识?dependentid和courseid列引用课程表中相同的课程索引。57、59、71、99、133、167都是课程表中的课程。查询应返回最后一个代码块中列出的列:userid、courseid和dependentid。工作非常顺利!非常感谢。
 DROP TABLE IF EXISTS course_dependency;

 CREATE TABLE course_dependency
 (course_id    INT NOT NULL
 ,dependent_id INT NOT NULL
 ,PRIMARY KEY(course_id,dependent_id)
 );

 INSERT INTO course_dependency VALUES
 (133          ,57),
 (133          ,55),
 (133          ,71),
 (167          ,57),
 (167          ,99);

 DROP TABLE IF EXISTS user_course;

 CREATE TABLE user_course
 (user_id INT NOT NULL
 ,course_id INT NOT NULL
 ,PRIMARY KEY(user_id,course_id)
 );

 INSERT INTO user_course VALUES
 (12         ,133),
 (12          ,55),
 (13          ,71),
 (14         ,133),
 (15         ,100);

 SELECT uc.* 
      , cd.dependent_id 
   FROM user_course uc 
   JOIN course_dependency cd 
     ON cd.course_id = uc.course_id 
   LEFT 
   JOIN user_course ucx 
     ON ucx.user_id = uc.user_id 
    AND ucx.course_id = cd.dependent_id 
  WHERE ucx.user_id IS NULL;

 +---------+-----------+--------------+
 | user_id | course_id | dependent_id |
 +---------+-----------+--------------+
 |      12 |       133 |           57 |
 |      12 |       133 |           71 |
 |      14 |       133 |           55 |
 |      14 |       133 |           57 |
 |      14 |       133 |           71 |
 +---------+-----------+--------------+