根据日期从表中获取事件

时间:2016-06-24 06:25:40

标签: php mysql

我有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)

现在我需要的是两件事

  1. 我需要从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'

    以上查询返回所有课程,但不会检查是否已分配。我需要一个可以同时检查的查询。

  2. 我跟我说约会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

0 个答案:

没有答案