0

我有一个包含几个表的数据库,这些表跟踪需要另一个人返工的人员错误。基本上,工作中的一个人可以在整个轮班期间由其他人修改多达 10 个不同的工作包。为了方便起见,我在表中只列出了 rework_1/original_worker_1/rework_comment_1(最多重复 10 个)和必须返工的人。我所有员工的姓名都在一个单独的表格中,因此我可以添加人员,并且我的表单会随着他们的姓名动态更新。我想做的是:

  1. 从我的工人姓名表中拉出一个人。
  2. 在 original_worker_X 列(其中 X 为 1 - 10)的另一个表中搜索其名称的所有出现。
  3. 输出值:工人姓名/我在 original_worker_X 列中找到它的次数。

从这里我需要制作一个条形图,以便每个人的名字都有一个条形图,其中包含有人必须对他们最初所做的事情进行返工的次数。

如果我能用 PHP 和 MySQL 做到这一点,我会赚钱,因为我可以用一些 PHP 变量、查询和循环来蛮力一些东西,但我充其量只是一个访问新手!感谢您的向导可以提供的任何帮助。

表格1:

在此处输入图像描述

表 2:

在此处输入图像描述

预期输出数量:

在此处输入图像描述

4

1 回答 1

1

所以我建议你做以下事情

  1. 创建一个新表,假设表 3 包含三个字段 A. ID、pkey、自动编号 B. original_worker、文本字段 C. Person_doing_rework、文本字段

  2. 您将需要十个插入语句,这些语句将插入每个原始工作人员 1-10,以及进行返工的人员,这是一个规范化表

目前,您的表格设计有点粗糙,并且无法实现带有 group by 列编号为 10 的 select 语句

下面是插入语句的示例 INSERT INTO Table3 (original_worker,Person_doing_rework) SELECT original_worker1,Person_doing_rework FROM table2 where isnotNull(original_worker1)

INSERT INTO Table3 (original_worker,Person_doing_rework) SELECT original_worker2,Person_doing_rework FROM table2 where isnotNull(original_worker2)

将此用于 original_worker3 复制到 original_worker10

第三步 你需要一个 delete 语句来删除表 3 中的所有记录,这是为了确保表 3 中的记录不重复,因为我们在表 2 和表 3 之间没有 pkey/fkey 关系

第四步 将所有查询按以下顺序放入宏中 A. 删除查询以首先运行 B. 插入查询以运行下一个

第五步 在宏中添加一个msgbox,最后运行,这是为了通知你所有其他的宏步骤,即上面的A和B已经成功运行。

第六步 现在,您可以从表 3 中获得一个 select 语句,该语句可以计算原始工作人员的工作被重新处理的次数,因为您现在在表 3 中有两个主要字段,一个用于 original_work,两个用于 Person_reworked。

因此,任何时候您想知道某些工作被重新处理了多少次,您只需单击宏按钮,这将运行所有查询并将您需要的值放入表 3 中,之后您可以查看通过第 6 步中的查询获取详细信息。

SELECT original_worker, Count(Person_doing_rework), FROM table3 GROUP BY original_worker;

于 2021-11-27T15:03:20.207 回答