我的MySQL表格(不同开放日期的栏目):
id name days_open
----------------------------------------
1 diner mo tu we th fr
2 joes fr sa su
3 jimmy sa su
4 tree su mo
我的问题:我在接下来的7,14或30天寻找开放的酒吧。现在的第一个日期是:2018-01-10(我们)
这应该是查询的结果:
date name
----------------------------------------
2018-01-10 diner (we)
2018-01-11 diner (th)
2018-01-12 diner (fr)
2018-01-12 joes (fr)
2018-01-13 joes (sa)
2018-01-13 jimmy (sa)
2018-01-14 joes (su)
2018-01-14 jimmy (su)
2018-01-14 tree (su)
...
下一天(7日,14日或30日)
我已经使用DAYOFWEEK(CURDATE())尝试了几个请求,但没有得到正确的结果。
有人可以帮助我吗?
答案 0 :(得分:0)
如下所示更改您的表格设计,并在接下来的15或30天内使用任何服务器端语言循环。或编写程序以获得下一个30天的清单。
users
-----
id name
-----------
1 diner
2 joes
3 jimmy
4 tree
day_opens
---------
id day user_id
-------------------------
1 2 1
2 3 1
3 4 1
4 6 2
5 7 2
SELECT CURDATE(), u.name, DAYNAME(CURDATE()) FROM day_opens o, users u WHERE o.user_id = u.id AND o.day = DAYOFWEEK(CURDATE());
如果您使用服务器端语言更改您的查询,如下所示并动态更改间隔日。
SELECT ADDDATE(CURDATE(), INTERVAL 1 DAY), u.name, DAYNAME(ADDDATE(CURDATE(), INTERVAL 1 DAY)) FROM day_opens o, users u WHERE o.user_id = u.id AND o.day = DAYOFWEEK(ADDDATE(CURDATE(), INTERVAL 1 DAY));