[英]php mysql Get the latest records based on multiple conditions and count them
我有一张桌子-工作人员
id | staff Name | adress
-------------------------
1 | Mr.A | Any Address
2 | Mr. B | Any Address
第二表-就业历史
eid | staff_id | school_id | type | grade | date_of_appointmet
--------------------------------------------------------------------
1 | 1 | 1 |Promotion | 17 | 2012-12-12
2 | 1 | 2 |promotion | 18 | 2013-2-2
3 | 2 | 2 |appointment | 17 | 2013-3-3
and so on tables moves
现在的问题是
怎么样
SELECT *
FROM employment_history eh1
WHERE eh1.date_of_employment = (
SELECT max(eh2.date_of_employment)
FROM staff s
JOIN employment_history eh2 ON s.id = eh2.staff_id
WHERE s.id = ?
)
取代?
,或酌情使用bind_param()
。
select staff_id, max(date_of_appointment) as date_of_appointment
from employment_history
group by staff_id
该查询将返回每个staff_id的最新员工记录。 将其转换为子查询并加入就业历史表
Select grade, count(1)
from
(select staff_id, max(date_of_appointment) as date_of_appointment
from employment_history
group by staff_id) a
inner join employment_history e on e.staff_id = a.staff_id and a.date_of_appointment = e.date_of_appointment
group by grade
该解决方案假设staff_id + date_of_appointment是唯一键...如果您有多个行,其中一个staff_id具有一个日期的多个雇用历史记录条目,则该行将不起作用。 您需要一些逻辑来使“最近的雇用历史记录”返回唯一的数据组合...如果staff_id + max(date_of_appointment)不是唯一的,则需要在“ a”子查询中给出逻辑返回唯一数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.