Mysql 获取哪些区域有三名以上合格员工

Mysql 获取哪些区域有三名以上合格员工,mysql,Mysql,我使用的MySql数据库中有以下表: create table employees ( num_pass int(5) not null, name varchar(40), primary key (num_pass) )engine=innodb; create table laboratories ( code int(10) not null, name varchar(40), primary key (codi), )engi

我使用的MySql数据库中有以下表:

create table employees (
    num_pass int(5) not null,
    name varchar(40),
    primary key (num_pass)
    )engine=innodb;

create table laboratories (
    code int(10) not null,
    name varchar(40),
    primary key (codi),
)engine=innodb;

create table areas (
    code int(5) not null,
    codeLab int(10) not null,
    level enum('H','M','L'),
    primary key (code, codeLab),
    foreign key (codeLab) references laboratories(code)
    )engine=innodb;

create table qualifieds (
    num_pass int(5) not null,
    area_assigned int(5),
    lab int(5),
    primary key (num_pass),
    foreign key (num_pass) references employees(num_pass),
    foreign key (area_assigned, lab) references areas (code, codeLab)
    )engine=innodb;
现在我想知道哪些地区有三名以上的合格员工。具体地说,我想获得区域代码以及实验室的名称、实验室和按地区订购的产品

我试图使用此命令来获取该区域的代码

select b.code 
from employees e, areas b, qualifieds q 
where e.num_pass=q.num_pass 
and 3 < (select count(b1.code) 
         from areas b1, qualifieds q1, employers e1 
         where e1.num_pass=q1.num_pass
         and q1.area_assigned=b1.code 
         and q1.lab=b1.codeLab);

但我得到的是一个所有区号的列表,重复次数与我拥有的区号为1、2、3、4和6的员工数量相同,我得到的是重复6次的序列1、2、3、4。你知道如何获得我需要的信息吗?

你可以使用GROUP BY,并且必须找到一个有3条以上记录的组

select areas_assigned, lab, count(num_pass)
    from qualifieds
    group by areas_assigned, lab
    having count(num_pass)>3;
如果需要在此基础上展开,请添加联接

select q.areas_assigned, l.name, count(q.num_pass)
    join laboratories l on l.lab = q.lab
    from qualifieds q
    group by q.areas_assigned, l.name
    having count(q.num_pass)>3;

三分之二是好的,但是我改变了一些东西,但是你的答案给了我正确的输入,我说:选择不同的a.code,l.name从合格的q中,实验室l,区域a组由q.area\u分配,q.lab有countq.num\u pass>3;现在它工作了,谢谢你!