php - 触发器根据另一个表更新计数

标签 php mysql

我正在开发一个用于管理员工的 php 项目。
我有两个表 employeedepartment ,部门编号是两者之间的关系。 department 有一个属性,其中包含基于部门编号的员工计数。
所以我陷入困境的是我希望自动插入员 worker 数,那么你认为我应该做什么

提前致谢

最佳答案

如果您不想使用(或有权访问)触发器,但想要抽象逻辑,则可以使用 View ( docs )。

因此,假设以下数据,以及动态计算整个部门表和员 worker 数的想法,您可能会得到以下查询:

CREATE TABLE
  `employees`
(
   `employeeID` INT PRIMARY KEY AUTO_INCREMENT,
   `name` VARCHAR(50),
   `department_number` INT
);

CREATE TABLE
  `departments`
(
  `department_number` INT PRIMARY KEY AUTO_INCREMENT,
  `name` VARCHAR(50)
);

INSERT INTO 
   `departments`
(`department_number`, `name`)
VALUES
(1, 'Tech Department'),
(2, 'Admin Department');

INSERT INTO
  `employees`
(`name`, `department_number`)
VALUES
('John Doe', 1),
('Jane Doe', 1),
('Jimmy Doe', 2);

然后查询:

SELECT
    DepartmentTbl.*,
    DepartmentEmployeeTbl.employee_count
FROM
  `departments` AS DepartmentTbl
LEFT JOIN
  (
   SELECT
      `department_number`,
      COUNT(`employeeID`) AS `employee_count`
    FROM
      `employees`
    GROUP BY
      `department_number`
   ) AS DepartmentEmployeeTbl
   ON DepartmentTbl.department_number = DepartmentEmployeeTbl.department_number 

给出结果:

department_number | name              | employee_count
-------------------------------------------------------
1                 | Tech Department   | 2
2                 | Admin Department  | 1

SQLFiddle - http://sqlfiddle.com/#!9/3e0b54/1

因此要创建此 View ,您可以使用:

CREATE OR REPLACE VIEW `departments_employee_count` AS
SELECT
        DepartmentTbl.*,
        DepartmentEmployeeTbl.employee_count
    FROM
      `departments` AS DepartmentTbl
    LEFT JOIN
      (
       SELECT
          `department_number`,
          COUNT(`employeeID`) AS `employee_count`
        FROM
          `employees`
        GROUP BY
          `department_number`
       ) AS DepartmentEmployeeTbl
       ON DepartmentTbl.department_number = DepartmentEmployeeTbl.department_number 

然后你可以将 View 称为:

SELECT
    *
FROM
    `departments_employee_count`

关于php - 触发器根据另一个表更新计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47180144/

相关文章:

php:从返回的关联数组访问值

mysql - 如何标准化实时数据库

mysql - 使用别名从另一列获取值

php - 403 - Ubuntu 14.04 上的权限被拒绝错误 - apache2

php - 如何测试 Laravel 5 工作?

php - Codeigniter,如何获取以json格式显示的数据库表数据?

php - 如何根据 dd-mm-yyyy 格式的时间戳和日期查询表

javascript - 使用 PHP、MySQL 和 jQuery 自动填写输入表单

mysql - mysql条件中的列顺序会影响查询性能吗?

php - 德行 2 更改语言 native