1

我正在尝试创建一个存储过程来返回一个 ID 列表和一个计算机名称,每个 ID 和一个计算机名称会根据连接用户的公司成员身份和该公司所在的区域而有所不同,格式如下:

ID | ComputerName
=================

....但我真的无处可去,如果有任何帮助,我将不胜感激!

我需要 ComputerName 的值是 NameCompany、NameRegion、NamePublic 之一,具体取决于登录用户是哪个公司/地区的成员:

计算机名称表:

ComputerID | CompnayID | NameCompany | NameRegion  | NamePublic
================================================================
1          | 1         | AlicesPC    | MarketingPC | GeneralPC
2          | 1         | BobsPC      | FinancePC   | SpecialPC
3          | 2         | AndysPC     | AdminPC     | ProtectedPC
4          | 3         | JanesPC     | ReceptionPC | GeneralPC

用户表:

UserID | UserName | MemberofCompanyID
=====================================
 1     | Jim      | 1
 2     | Sally    | 2
 3     | Ann      | 3   

公司表:

CompanyID | CompanyName | MemberOfRegionID
==========================================
1         | Acme        | North
2         | Sprockets   | North
3         | Arkwrights  | South

区域表:

RegionID | RegionName
=====================
1        | North
2        | South

这样:

从“StoredProcedure”中选择 (ID,ComputerName) 以获取 Jim 返回:

ID | ComputerName
=================
1  | AlicesPC
2  | BobsPC
3  | AdminPC
4  | GeneralPC

从 Sally 返回的“StoredProcedure”中选择 (ID,ComputerName):

ID | ComputerName
=================
1  | MarketingPC
2  | FinancePC
3  | AndysPC
4  | GeneralPC

从“StoredProcedure”中选择 (ID,ComputerName) 以获取 Ann 返回:

ID | ComputerName
=================
1  | GeneralPC
2  | SpecialPC
3  | ProtectedPC
4  | JanesPC

我还尝试添加一个“OverrideName”表,可以修改给定用户的内容:

覆盖名称表:

OverrideID | UserID | ComputerID | OverrideName
======================================================
1          | 3      | 2          | Special-PC-TopFloor

因此,从“StoredProcedure”中为 Ann 选择 (ID,ComputerName):

ID | ComputerName
=================
1  | GeneralPC
2  | Special-PC-TopFloor
3  | ProtectedPC
4  | JanesPC

到目前为止,我的想法是建立一个结果集

身份证、姓名公众号

然后使用 NameRegion 覆盖它,其中用户 ID 在公司中,公司在区域中。

然后使用用户 ID 在公司中的 NameCompany 覆盖它。

最后用覆盖表中条目与用户名匹配的数据覆盖它。

任何帮助或建议表示赞赏!

谢谢,

4

0 回答 0