我一直在为 MSSQL 中的客户开发的资产数据库存在问题。它需要捕获Required Actions
,例如Lifting Equipment
在特定位置需要在购买后 6 个月进行检查。可以通过不同的Due Dates
方式计算这些所需的操作,但为了简化,这里将根据它们计算Purchase Date
。
因此,为此我有一个名为的表tblActionsRequired
,其中包含以下相关字段:
ActionID
- 对于所需的操作EquipmentCategoryID
orEquipmentTypeID
orEquipmentID
- 所以这些字段中的任何一个都是必需的。有了这个,他们指定一个设备类别或设备类型或特定设备需要一个操作。例如,2kg 粉末消火栓是一种设备类型,它属于消防安全设备类别,并且可能有一个特定的 2kg 粉末消火栓,其资产编号为 PFH2KG001。BasedAtID
- 公司的分支机构或站点
理想情况下,我想做的是尽可能多地保留在一个查询中,而不是为每个组合创建单独的查询或视图,然后使用 UNION 将它们添加在一起。我还有其他几个类似的字段,可以通过这些字段对这些必需的操作进行分段,因此在这里使用联合似乎很简单,但我计算出我需要满足 48 种不同的组合,并可能为每个组合创建一个视图,然后将它们联合起来一起!
所以接下来我有tblEquipment
包含以下相关键:
EquipmentID
- 主键EquipmentTypeID
= 外键,该资产属于哪个设备类型BasedAtID
- 外键,资产位于哪个站点
然后Equipment Types
属于Equipment Categories
和类别然后允许构建具有父子关系的树结构,但是我认为我在创建一个vwCategoryTree
使用以下字段调用的视图时已经充分注意了这些:
ParentCategoryID
EquipmentTypeID
这个视图已经过测试并且可以很好地检查出来,它穿过树结构并允许您EquipmentTypeID
在EquipmentCategoryID
.
我需要帮助的是如何根据 EquipmentCategoryID、EquipmentTypeID 或 EquipmentID 中的哪个字段具有值来在 tblActionsRequired 和 tblEquipment 之间进行某种条件连接。如果只能指定 EquipmentID 或 EquipmentTypeID,那么我认为这会起作用:
ON (tblActionsRequired.EquipmentID IS NOT NULL AND tblEquipment.EquipmentID = tblActionsRequired.EquipmentID) OR (tblActionsRequired.EquipmentTypeID IS NOT NULL AND tblActionsRequired.EquipmentTypeID = tblEquipment.EquipmentTypeID)
但是如何将第三个表带入此连接以适应 EquipmentCategoryID 或至少避免使用 UNION?
对不起,如果有什么不明白的,请尽管问!非常感谢你!