Php 如何检查表2中是否使用了表1中的值?

Php 如何检查表2中是否使用了表1中的值?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有两个表员工和部门 部门: create table dept ( id INT NOT NULL AUTO_INCREMENT, dept_name VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); 雇员: create table department_master ( id INT NOT NULL AUTO_INCREMENT, dept_id INT NOT NULL, emp_name VARCHAR(100) NOT NULL, PRIM

我有两个表
员工
部门

部门:

create table dept (
id INT NOT NULL AUTO_INCREMENT,
dept_name VARCHAR(50) NOT NULL, 
PRIMARY KEY (id)
);
雇员:

create table department_master (
id INT NOT NULL AUTO_INCREMENT,
dept_id INT NOT NULL, 
emp_name VARCHAR(100) NOT NULL, 
PRIMARY KEY (id)
);
如果将部门分配给employee表中的某个员工,我希望防止从UI中删除这些部门。左连接给了我重复的值


如何查看员工表中是否使用了部门

如果要防止删除某个部门,只需在“部门id”列的表
department\u master
中添加外部约束即可

create table department_master (
    id INT NOT NULL AUTO_INCREMENT,
    dept_id INT NOT NULL, 
    emp_name VARCHAR(100) NOT NULL, 
    PRIMARY KEY (id),
    constraint con_dm foreign key dept_id references dept( id )
);
它的默认行为是DELETE RESTRICT上的
,这意味着如果给定部门id的部门主控中至少存在一行,则无法将其从部门表中删除

如果要提取没有任何员工记录的部门,可以使用
NOT EXISTS

select *
from dept d
where not exists (
        select 1
        from department_master m
        where d.id = m.dept_id
        );

我相信您希望统计按部门分组的员工人数,如下所示:

SELECT count(*) as employees, d.dept_name  FROM dept AS d LEFT JOIN department_master AS e ON e.dept_id = d.id group by e.dept_id

您正在请求选择。。。。在哪里???@scaisEdge我尝试加入,但没有得到想要的结果。所以我想知道是否有更好的方法来做到这一点?如果你只需要一个简单的检查,你可以使用选择的地方可能重复。。如果这是清楚的。。好的,否则让我know@Krish请注意,存储引擎应为InnoDB,以便work@RaymondNijland非常感谢。