Mysql 显示31天的假期状态
我有这两张桌子Mysql 显示31天的假期状态,mysql,case,Mysql,Case,我有这两张桌子 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 现在我需要以这种方式显示输出 NA
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
那么,我们如何为它编写查询呢
任何建议都会有帮助。这是给你的;-)
向查询中添加其他字段,并添加WHERE过滤器以选择准确的月份。我认为可以简化,应该使用附加表和透视表。
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