我有这些表格:
create table department (
id int auto_increment,
dep varchar(10),
primary key (id));
create table employee (
ssn varchar(10),
name varchar(10),
dep int,
reg year,
primary key (ssn,dep),
foreign key(department) references department(id));
员工具有不同的部门经验并记录在员工表中。我在PHP脚本中显示每个部门的最后一个部门的员工数量时遇到问题。它应该是
no.| department | number of employees
1 | A |
2 | B |
3 | C |
4 | D |
我希望你明白,因为我不会说英语.. :)
答案 0 :(得分:1)
您可以获得每位员工的最新日期。然后联接回数据以获取部门,并进行聚合:
select dept, count(*)
from employee e join
(select ssn, max(reg) as maxy
from employee
group by ssn
) ee
on e.ssn = ee.ssn and e.reg = ee.maxy
group by dept;
顺便说一句,您的数据结构很差。您的员工表应该每个员工有一行(带有明显的主键)。然后,您应该有另一个表,称为EmployeeDepartment
,其中包含部门信息。