好的。这有点复杂。我一直在努力实现它,但到目前为止还没有实现。
我有三张 table 。 休假批准 请假申请 ml_leave_type
这是leave_approval表
然后从leave_application_id链接到leave_application
现在棘手的问题来了, 我想要表中的两条记录。
- I want Total leaves taken by employee in year 2014
- I want Total Leaves taken by employee in month november of 2014
因此意味着需要每年和每月采用两种不同方法的两列。
到目前为止我有疑问。
SELECT
LA.employee_id,
DATEDIFF(
LA.approved_to,
LA.approved_from
) AS TotalLeavesTaken,
LAPP.`entitlement_id`,
LAPP.`ml_leave_type_id`,
LA.leave_application_id,
LA.approved_from AS LeaveFrom,
LA.approved_to AS LeaveTo
FROM
leave_approval LA
INNER JOIN leave_application LAPP
ON LAPP.application_id = LA.leave_application_id
WHERE YEAR(LA.approval_date) = 2014
AND LA.`employee_id` = 1
这是我得到的查询结果..
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
更新
我可能无法清楚地解释我的问题。
我想要实现的是添加两个额外的列,而不是删除我拥有的列。我的意思是我正在使用我拥有的大多数/所有选择字段
另外,我希望将 2014 年的总休假数显示在一列中,并在该年的不同字段中显示当月的总休假数。
这是我想要的例子。>
ml_leave_type_id | Total Leaves Taken in Year (e-g 2014) | Total Leaves taken in Month (e-g November)
1 10 2
2 6 0
3 4 1
最佳答案
类似的事情可以吗?
2014 年,employee_id = 1 的总假期
SELECT
LA.employee_id,
SUM(
DATEDIFF(
LA.approved_to,
LA.approved_from
)
) AS TotalLeavesTaken,
LAPP.`entitlement_id`,
LAPP.`ml_leave_type_id`,
LA.leave_application_id,
LA.approved_from AS LeaveFrom,
LA.approved_to AS LeaveTo
FROM
leave_approval LA
INNER JOIN leave_application LAPP
ON LAPP.application_id = LA.leave_application_id
WHERE YEAR(LA.approval_date) = 2014
AND LA.`employee_id` = 1
GROUP BY LA.`employee_id` = 1
employee_id = 1、年份 = 2014 年且月份 = 11 的总休假
SELECT
LA.employee_id,
SUM(
DATEDIFF(
LA.approved_to,
LA.approved_from
)
) AS TotalLeavesTaken,
LAPP.`entitlement_id`,
LAPP.`ml_leave_type_id`,
LA.leave_application_id,
LA.approved_from AS LeaveFrom,
LA.approved_to AS LeaveTo
FROM
leave_approval LA
INNER JOIN leave_application LAPP
ON LAPP.application_id = LA.leave_application_id
WHERE YEAR(LA.approval_date) = 2014
AND MONTH(LA.approval_date) = 11
AND LA.`employee_id` = 1
GROUP BY LA.`employee_id` = 1
但是,我确实注意到您的数据集中有一些日期重叠。例如:
employee_id = 1 在 2014/11/01 - 2014/11/06 和 2014/11/05 - 2014/11/08 休假。日期 2014/11/05 和 2014/11/06 有何关系。系统将如何处理这种情况
关于MYSQL|从单个表中获取两条不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27523470/