【问题标题】:Select leave data from attendance table given the following condition给定以下条件,从考勤表中选择休假数据
【发布时间】:2015-02-07 16:09:02
【问题描述】:

我有员工的考勤数据存储在表attendance 中,列名如下:

  • emp_id(员工 ID)
  • 日期
  • 类型(离开、缺席等)

(还有其他的,但为了简单起见,我省略了它们)

我的目标是检索员工休假的给定月份的所有日期(type = 'Leave')以及上个月的最后一次休假,如果有的话

使用两个查询很容易做到这一点(我正在使用 PHP 来处理数据),但是有什么方法可以在一个查询中完成吗?

【问题讨论】:

  • @Isaiah 当然,这里不急。 :-) 只是我似乎无法理解这个。
  • 我会将这两个查询与 UNION 结合起来
  • @bpgergo 啊!现在这是有道理的。万分感谢! :)
  • 我的查询可能更高效
  • 你能提供样本数据和想要的结果吗?对我来说,您希望查询输出什么并不明显。例如,什么是“给定月份”?什么是“上个月”?

标签: mysql sql


【解决方案1】:

我正在回答我自己的问题以便结束它。正如@bpgergo 在 cmets 中指出的那样,UNION 将在这里解决问题。

【讨论】:

    【解决方案2】:
    SELECT * FROM table_name
    WHERE type="Leave" AND
    date <= (CURRENT_DATE() - 30)
    

    选择您想要的字段等,然后使用 mysql 的 CURRENT_DATE() 函数来组合 where 子句。我在一个月中减去 30 30 天。

    如果 date 是日期列,这将返回 1 个月或更早之前离开的所有人。

    编辑:

    如果您想要一个特定的日期,请像这样更改第 2 个月:

    date <= (date_number - 30)
    

    【讨论】:

    • 我想你误解了我的意思。这里的“离开”并不是说这个人离开了公司;那是那个人请假的时候。 :)
    • 嗯,你可以编辑条件,但这可能是最好的方法
    猜你喜欢
    • 2013-10-12
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2023-04-02
    • 2020-01-16
    相关资源
    最近更新 更多