我有两个表“USERS”和“CALENDER”,在日历表用户中放置他的可用日期,表示一对多关系。
现在我想按可用日期获取用户列表(今天的日期表示今天可用),即:我想在顶部显示今天可用的用户,然后显示将来可用的用户,然后显示这些用户谁没有任何可用性(即:日历中没有记录)。
我正在尝试以下查询:
SELECT u.first_name, c.date
FROM users AS u
LEFT JOIN calendar AS c ON (c.uid = u.id)
GROUP BY u.id
ORDER BY DATE(c.date) ASC
但是这将给我记录,首先是那些在日历中没有任何可用性的用户,然后是那些过去有可用性的用户。结果如下:
User1 NULL User13 2012-12-12 00:00:00
User2 NULL User12 2012-12-12 00:00:00
User3 NULL User10 2012-12-23 00:00:00
User4 NULL User10 2012-12-24 00:00:00
User5 NULL User9 2012-12-25 00:00:00
User6 NULL - Want To look this => User8 2012-12-27 00:00:00
User7 2012-09-20 00:00:00 User7 2012-12-28 00:00:00
User8 2012-09-29 00:00:00 User1 NUL
User9 2012-10-25 00:00:00 User2 NUL
User10 2012-10-26 00:00:00 User3 NUL
User11 2012-10-27 00:00:00 User4 NUL
User12 2012-12-05 00:00:00 User5 NUL
User13 2012-12-10 00:00:00 User6 NUL
最佳答案
没有考虑这么多,您是否尝试过使用
... ORDER BY DATE(c.date) DESC
这将对 DESC
结尾进行排序,而不是您的显式(和默认)ASC
结尾。
关于来自两个表的MySql复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13834825/