小编All*_*nde的帖子

我应该如何模拟状态/活动的工作流?(规则如“如果是 3 转到 4,如果是 4 转到 5”等)

我正在尝试对工作流(状态和活动)进行建模以创建“规则”。

让我给你举个例子。

主要的“对象”让我们说是“车辆要求”,我会有这张表:

idRequirement, idVehicle,DateOfRequirement, idStatus, LastUpdate
1                2       2012-01-02 10:20:00, 1     ,2012-01-02 10:20:00
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,因为寄存器刚刚创建,DateOfRequirement 和 LastUpdate 是相同的,LastUpdate 将在每次状态更改后更新。

状态表

 idStatus,Status
 1         New
 2         Vehicle Assigned
 3         Closed
Run Code Online (Sandbox Code Playgroud)

活动表

 idActivitie, Activitie
 1            Create Vehicle Requirement
 2            Assign Vehicle
 3            Close requirement.
 4            ReAssign Vehicle.
 5            Confirm
Run Code Online (Sandbox Code Playgroud)

直到上表我都没有问题,但我的问题是,例如:

我知道如果当前状态不是“车辆已分配”(idStatus=2),我无法关闭要求(在“车辆要求”上更新到 idStatus=3)。

我可以通过代码来做到这一点(或者我认为是这样),但是无论如何都可以将这种规则建模到表格中吗?我的意思是一个表格,我在其中检索下一个 idStatus 和要执行的活动(以保存每个需求及其活动的“kardex/历史”),例如检查活动或当前状态?

规则还将根据时间和状态设置 3 个“警报”。例如,分配车辆的“绿色”限制时间为 30 分钟或更短,黄色“警报”在创建需求后将在 31 到 45 之间(状态为新),红色警报将在 45 分钟后显示状态为“新”

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned  Green
Run Code Online (Sandbox Code Playgroud)

39 分钟后,它会是这样的:

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 database-design relational-theory

6
推荐指数
1
解决办法
1241
查看次数

对此的替代查询(避免 DISTINCT)

注意:我使用 MSSQL 2008,但我想它对许多其他数据库引擎有效 我有这个表“用户”:

用户 ID 用户国家 ID
1 用户 1 1
2 用户 2 2
3 用户 3 3
4 用户 4 4
5 用户 5 4
6 用户 6 3

而这张表“国家”

CountryID 国家
1 MX
2 美国
3 CAN
4 英格兰

如您所见,每个用户都属于一个国家。

如果我想知道,我在用户表上至少拥有一个用户的所有不同国家/地区,现在我执行以下查询:

select distinct country 
from Users inner join
countries on users.CountryID=countries.CountryID
Run Code Online (Sandbox Code Playgroud)

并实现下一个结果集:

能够
英国
MX
美国 

这确实是所有不同的国家,其中我在 muy 表 Users 上至少有一个用户。

我的疑问是,是否可以在不使用“DISTINCT”的情况下实现上述结果集,我的意思是只使用 JOINS 和条件?

这是 de DDL 脚本:

使用 [测试]
走
/****** 对象:表 [dbo].[用户] 脚本日期:09/21/2012 16:21:14 …

sql-server-2008 join query query-refactor

4
推荐指数
2
解决办法
4万
查看次数