我的问题的一个非常简单的表示是:
评论
| 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_id
和mentee_id
是users表的ID。
我希望得到users.id
users.first_name
users.last_name
的受训者user
和status
在指导表中创建后的最后14天。
答案 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
答案 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名受指导者)。
希望它是!