我现在正在做一个小项目。我有两张table和活动区
工作台区域
+---------------+
| a_id a_name |
+---------------+
| 1 area1 |
| 2 area2 |
| 3 area3 |
| 4 area4 |
+---------------+
表活动
+-----------------------------------------------------+
| id areaid starttime endtime |
+-----------------------------------------------------+
| 1 1 2018-09-21 15:00:00 2018-09-21 17:00:00 |
| 2 2 2018-09-23 15:00:00 2018-09-21 18:00:00 |
| 3 1 2018-09-21 17:00:00 2018-09-21 19:00:00 |
| 4 4 2018-07-21 12:00:00 2018-07-21 13:30:00 |
+-----------------------------------------------------+
现在我要选择所有区域并加入当前活动或下一个将要开始的活动:
starttime >= NOW() AND endtime >= NOW()
starttime <= NOW() AND endtime >=NOW()
此外,还应显示没有活动或即将开展活动的区域。
我期望得到以下结果:
+-------------------------------------------------------+
| a_id id startime endtime |
+-------------------------------------------------------+
| 1 1 2018-09-21 15:00:00 2018-09-21 17:00:00 |
| 2 2 2018-09-23 15:00:00 2018-09-21 18:00:00 |
| 3 null null null |
| 4 null null null |
+-------------------------------------------------------+
我试过几个问题,但还没有找到解决办法。
目前这是我最好的尝试:
SELECT *
FROM areas ar
LEFT JOIN activity a
ON ar.a_id = a.areaid
WHERE a.starttime >= NOW() AND a.endtime >= NOW() OR a.starttime <= NOW() AND a.endtime >= NOW()
ORDER BY a.starttime DESC;
通过此查询,我可以找到所有活动或即将进行的活动的结果。但是如何将where表达式限制为每个外键只能得到一行呢?
提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!