显示离开状态31天

时间:2012-02-17 07:12:29

标签: 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

现在我需要以这种方式显示输出

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   

那么我们如何为此编写查询?

任何建议都会有所帮助。

1 个答案:

答案 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过滤器以选择确切的月份。