我有3个表,用户,课程和usertocourse
在用户表格中,字段位于下方
| id | name | email |
课程表
| course_id | name |description| enrollment_key |
对于自学课程,enrollment_key为1,对于管理员分配的课程,enrollment_key为0。
usertocourse
| user_id | course_id | assigndate | completiondate | started |
当管理员为用户分配课程时,它将来到此表,或者如果用户自己注册,它也将来到此表。仅当用户启动课程时,启动位设置为1,否则为0。 对于自我分配的课程,完成日期自动设置为某个默认日期,例如(2000-11-30)
现在我需要的是两件事
我需要从usertocourse获取该user_id的所有课程列表 table(自学校录和指定课程),以及课程表中所有自学课程的列表,但用户已注册的课程除外。
SELECT a.*, b.* FROM courses a JOIN users_to_courses b WHERE a.course_id=b.course_id and b.user_id='$user_id'
以上查询返回所有课程,但不会检查是否已分配。我需要一个可以同时检查的查询。
我跟我说约会2016-07-01',我想显示那个月的所有课程。如果分配日期和完成日期在同一个月,下面给出的查询工作正常,如果课程是在2016-06-28开始并且completiondate是2016-07-05,那么查询将无法正常工作,因为我将$ date与分配日期。
SELECT a.*,b.* FROM courses a JOIN users_to_courses b WHERE EXTRACT(YEAR_MONTH FROM b.`assign_date`) = EXTRACT(YEAR_MONTH FROM '$date') AND b.`user_id` = '$user_id' and a.enrollment_key='0' and b.completion_date!='2000-11-30' and a.course_id = b.course_id