获取分配给角色的人数并防止设置较低的人数

Getting number of people assigned to a role and preventing setting a lower number

提问人:Stuart Pinfold 提问时间:3/24/2023 更新时间:3/24/2023 访问量:27

问:

我正在开发一个数据库,我们在其中管理工作和自由职业者,他们拥有个人工作所需的技能,然后将他们分配给这些工作。例如,包含一天作业和多日作业示例(可能重叠)的作业数据库:

作业 ID 作业名称 工作开始 作业结束
56 在伦敦的一些工作 2023-04-15 2023-04-17
57 伯明翰的一些工作 2023-04-23 2023-04-23
58 曼彻斯特的一些工作 2023-04-23 2023-04-25

在单独的表中,我们有角色:

角色 ID 角色名称
13 司机
32 工程师
34 技工

在第三张表格中,我们有自由职业者:

自由职业者ID 自由职业者姓名
22 乔·博格斯
23 玛丽·史密斯
24 莫·穆罕默德
25 凯西·罗杰森
26 丽贝卡·格兰特

然后,我们可以分配每项工作所需的每种技能的数量:

JobRoleID 工作角色工作 工作角色角色 JobRoleQuantity
4 56 34 2
5 56 32 1
6 57 32 1
7 57 13 1
8 58 32 1
8 58 13 1

因此,我们需要:

  • 伦敦有2名机械师和1名工程师
  • 1 工程师 和 1 司机 在 伯明翰
  • 曼彻斯特有1名工程师和1名司机

最后,我们将自由职业者分配到工作岗位上。至关重要的是,我们可能不需要所有日期的所有角色

工作自由职业者ID 工作自由职业者工作 工作自由职业者日期 工作自由职业者角色 工作自由职业者自由职业者
101 56 2023-04-15 32 22
102 56 2023-04-16 34 22
103 56 2023-04-17 34 23
104 57 2023-04-23 13 24
105 57 2023-04-23 32 26
106 58 2023-04-23 32 25
107 58 2023-04-24 32 25
108 58 2023-04-25 32 22

所以我们有:

  • 在伦敦,Joe Bloggs 于 15 日担任工程师,然后 Joe Bloggs 于 16 日担任机械师,然后 Mary Smith 于 17 日担任机械师
  • 在伯明翰,Mo Mohammad 担任司机,Rebecca Grant 担任工程师,均在 23 日
  • 在曼彻斯特,Casey Rogerson 于 23 日和 24 日担任工程师,然后 Joe Bloggs 于 25 日担任工程师

正如你所看到的,这个系统可以很灵活,因为有时我们需要所有日子的所有角色,有时在某些日子里只需要一个角色,而在其他日子里不需要,有时在几天的组合中需要角色的组合。


问题

现在我需要一些逻辑,以便角色数量不会减少到实际分配的数量以下。

在上面的示例中,唯一应该能够“删除”(设置为零)的是曼彻斯特的驱动程序,因为它尚未分配。

再举一个例子,如果我在伯明翰申请了 2 名工程师,分配了 Rebecca 并将另一个插槽暂时留空,然后决定我不需要第二名工程师,我应该只能将其减少到 1 名,而且不少于。

我可以使用什么数据库逻辑来获取为每个角色分配的人数,无论是不同的人还是同一个人,以及日期是否重叠,以便在编辑所需的工作角色时可以在字段上设置值?min<input type="number">

php mysql sql 数学 逻辑

评论

0赞 Bellator 3/24/2023
这似乎是一件相当容易解决的事情,但是我只是没有遵循您当前的逻辑。这就是为什么我们通常会要求你提供代码示例,说明你尝试过什么,以及你期望发生什么与发生了什么。重新调整代码逻辑的用途比将其拼凑在一起要容易得多。比如当你说“角色数量不能减少”时,不知道你的意思。工作所需的角色数量?至少使用您引用的表中的列名。这导致我们不得不上下滚动才能看到“曼彻斯特的司机”是什么意思
0赞 Bellator 3/24/2023
stackoverflow.com/questions/13390490/......不过,这似乎会有所帮助。在您的情况下,只需将数学从大于更改为小于......

答: 暂无答案