我有这两张桌子。
Leave Table
from_date to_date user_id
2011-12-01 2011-12-01 1
2011-12-01 2011-12-07 2
2011-11-02 2011-11-04 3
user table
id name
1 john
2 Caren
3 Sam
现在我需要以这种方式显示输出
NAME 1 2 3 4 5 6 7 ......up to 31 days
john L
Caren L L L L L L L
Sam L L L
那么我们如何为此编写查询?
任何建议都会有所帮助。
答案 0 :(得分:1)
这是给你的;-)
SELECT
u.*,
IF(1 BETWEEN DAYOFMONTH(from_date) AND DAYOFMONTH(to_date), 'L', NULL) '1',
IF(2 BETWEEN DAYOFMONTH(from_date) AND DAYOFMONTH(to_date), 'L', NULL) '2',
IF(3 BETWEEN DAYOFMONTH(from_date) AND DAYOFMONTH(to_date), 'L', NULL) '3',
IF(31 BETWEEN DAYOFMONTH(from_date) AND DAYOFMONTH(to_date), 'L', NULL) '31'
FROM test.user u
JOIN `leave` l
ON u.id = l.user_id
在查询中添加其他字段,并添加WHERE过滤器以选择确切的月份。