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

时间:2017-03-05 17:11:52

标签: php mysql codeigniter

我有两张表employeesdepartments

部门:

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)
);

如果将部门分配给员工表中的某个员工,我希望阻止部门从UI中删除。左连接给我重复的值。

如何查看在employees表中是否使用了部门。

2 个答案:

答案 0 :(得分:2)

如果要阻止删除部门,只需在dept_id列的表department_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 )
);

它的默认行为是ON DELETE RESTRICT,这意味着如果给定dept_id的department_master中至少存在一行,则无法从dept表中删除它。

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

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

答案 1 :(得分:0)

我相信你想要按部门分组的员工数量,如下:

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