我有一个名为Lookup
的表,用于定义Users
,Groups
和Apps
之间的关联:
aLookup:
+----+---------+-------+-----------+---------+
| id | from_id | to_id | from_type | to_type |
+====+=========+=======+===========+=========+
| 1 | 1 | 2 | User | Group |
+----+---------+-------+-----------+---------+
| 1 | 2 | 1 | Group | App |
+----+---------+-------+-----------+---------+
aUser aGroup aApp
+----+---------+--------+ +----+-------+ +----+-----------+--------+
| id | F_Name | L_Name | | id | Name | | id | Name | url |
+====+=========+========+ +====+=======+ +====+===========+========+
| 1 | Foobar | Whatley| | 1 | Sys | | 1 | TPS_Admin | /tpsa/ |
+----+---------+--------+ +----+-------+ +----+-----------+--------+
| 2 | Turd |Ferguson| | 2 | Mgmt | | 2 | TPS | /tps/ |
+----+---------+--------+ +----+-------+ +----+-----------+--------+
Lookup
表格通过Users
授予Applications
Groups
次访问权。
我想使用from_type
& to_type
作为要搜索的表。
类似的东西:
SELECT
l.id, X.Name AS from_name, Y.Name AS to_name
FROM
aLookup l
LEFT JOIN
["a" + l.from_type] X ON l.from_id = X.id
LEFT JOIN
["a" + l.to_type] Y ON l.to_id = Y.id
理想情况下会产生类似这样的东西:
+----+-----------+------------+
| id | from_name | to_name |
+====+==============+=========+
| 1 |Foobar Whatley| Mktg |
+----+--------------+---------+
| 1 | Mktg | TPS |
+----+--------------+---------+
我已经检查了a few articles,但他们似乎更多地将数据合并到一个实体;比如特定日期销售的商品数量。而我需要将数据整合在一起的东西。
这里有一些要记住的事情:
答案 0 :(得分:0)
你是怎么想出这么奇怪的方式来做到这一点的? 我会做这样的事情:
实体表:
TblGroups:
Group_Id int
Group_Name varchar(50) - 或任何适合您需要的数字
TblApps
App_Id int
App_Name varchar(50) - 或任何适合您需要的数字
向tblUsers
User_Id int
User_UserName varchar(20)
User_Password varchar(10) - 不要忘记加密!!!
其他用户详细信息,例如用户名和姓氏以及其他......
连接表:
TblUserToGroup
UTG_UserId int
UTG_GroupId int
TblGroupToApp
GTA_GroupId int
GTA_AppId int
我想我不必告诉你要使用哪些索引,但如果我只是发表评论而且我会编辑我的答案。