根据基于时间的条件获得结果

时间:2014-10-01 08:12:15

标签: mysql sql

我的问题的一个非常简单的表示是:

评论

| mentor_id | mentee_id | status   | created    |
| 1         | 2         | active   | 2014-08-13 |
| 1         | 2         | inactive | 2014-08-20 |
| 1         | 2         | inactive | 2014-08-27 |
| 1         | 3         | inactive | 2014-08-20 |
| 1         | 2         | inactive | 2014-09-03 |

用户表

| id | first_name | last_name |
| 1  | Ivan       | Pietro    |
| 2  | Alexander  | Summers   |
| 3  | Mark       | Xavier    |

导师表

| id | mentee_id | mentor_id | created    |
| 1  | 2         | 1         | 2014-08-06 |
| 2  | 3         | 1         | 2014-08-06 |

mentor_idmentee_id是users表的ID。

我希望得到users.id users.first_name users.last_name的受训者userstatus在指导表中创建后的最后14天。

3 个答案:

答案 0 :(得分:1)

检查

  select user.id,user.first_name,user.last_name,max(Reviews.created) RCreated, Mentorship.created  MCreated
    from Reviews 
    inner join User on Reviews.mentee_id=USer.id 
    inner join Mentorship on Reviews.mentee_id=Mentorship.mentee_id
    where status='inactive'  
    group by User.id 
    having  DATEDIFF(RCreated, MCreated) >= 14

http://sqlfiddle.com/#!2/dfc71/26

答案 1 :(得分:0)

这样的东西? (CURDATE()用于MySQL,如果使用不同的SQL,则必须查看它。)

SELECT users.*
FROM users, reviews
WHERE reviews.mentee_id = users.id AND reviews.status = 'inactive' AND DATEDIFF(reviews.created, CURDATE()) >= 14;

答案 2 :(得分:0)

你的问题不是很明确,但我认为你要求:

SELECT  DISTINCT u.*
FROM    reviews r
JOIN    mentorship m
        ON m.mentee_id = r.mentee_id AND m.mentor_id = r.mentor_id
JOIN    user u
        ON u.id = r.mentee_id
WHERE   r.status =  'inactive'
AND     DATEDIFF(r.created, m.created) >= 14

这会给你:

id first_name last_name
-- ---------- ----------
2  Alexander  Summers
3  Mark       Xavier

很难知道这是否是您所追求的因为数据集有限(无论如何只有2名受指导者)。
希望它是!