php mysql根据多个条件获取最新记录并计数
我有一个桌上工作人员php mysql根据多个条件获取最新记录并计数,php,mysql,sql,Php,Mysql,Sql,我有一个桌上工作人员 id | staff Name | adress ------------------------- 1 | Mr.A | Any Address 2 | Mr. B | Any Address 第二表-就业历史 eid | staff_id | school_id | type | grade | date_of_appointmet -------------------------------------------------
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
现在的问题是
- 我想从员工表中获取该人员的最新工作及其详细信息
- 我如何计算17个年级的员工中有多少人在学校工作 (请记住,员工1(a先生)现在已晋升至18岁,现在在学校2工作。)
- 像这样的东西怎么样
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
此查询将返回每个员工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在一个日期中有多个雇用历史记录条目,则此操作将不起作用。您需要一些逻辑来使“最近的就业历史记录条目”返回唯一的数据组合…如果员工id+max(任命日期)不唯一,您需要在返回唯一数据的“a”子查询中提出逻辑。您能告诉我们您已经尝试过哪些查询吗?如果使用我记忆中的或搜索过的内容,如就业史、内部加入和应用限制,但无法获得我问题的第二部分,我稍微修改了查询,使其与eh1的更多条件相匹配,它正在运行voilla!