SF.select * from A表 left join B表 on A表.人员ID=B表.人员ID
方式1:select …… , c.姓名 as 创建人 , d.姓名 as 最后修改人 , e.姓名 as 审核人 from A表 as a left join B表 as c on a.创建人=c.id left join B表 as d on a.最后修改人=d.id left join B表 as e on a.审核人=e.id
方式2select …… , (select 姓名 from B表 where id=a.创建人) as 创建人 , (select 姓名 from B表 where id=a.最后修改人) as 最后修改人 , (select 姓名 from B表 where id=a.审核人) as 审核人 from A表 as a
方式3数据库中建函数,然后在sql中使用 select …… , fun_GetName(a.创建人) as 创建人 , fun_GetName(a.最后修改人) as 最后修改人 , fun_GetName(a.审核人) as 审核人 from A表 as a
还是建视图方便 create or replace view v_c as select A.UserFile, (select B.UserName from B where B.UserID=A.CreateUserID) as UserName1, (select B.UserName from B where B.UserID=A.LastSaveUserID) as UserName2, (select B.UserName from B where B.UserID=A.CheckedUserID) as UserName3, (select B.UserName from B where B.UserID=A.PrintUserID) as UserName4 from A
, c.姓名 as 创建人
, d.姓名 as 最后修改人
, e.姓名 as 审核人
from A表 as a left join B表 as c on a.创建人=c.id
left join B表 as d on a.最后修改人=d.id
left join B表 as e on a.审核人=e.id
B表: UserID,UserName
A表: UserFile,CreateUserID,LastSaveUserID,CheckedUserID,PrintUserIDA表的后四个字段内容均为B表的userid,
请教,如何设计表结构,或如果查询得到
UserFile,UserName,UserName,UserName,UserName
, (select 姓名 from B表 where id=a.创建人) as 创建人
, (select 姓名 from B表 where id=a.最后修改人) as 最后修改人
, (select 姓名 from B表 where id=a.审核人) as 审核人
from A表 as a
select ……
, fun_GetName(a.创建人) as 创建人
, fun_GetName(a.最后修改人) as 最后修改人
, fun_GetName(a.审核人) as 审核人
from A表 as a
如有其它的输入的限制,最好加个group,人员表对应group。
限制谁可建立/修改/审核。
A表: UserFile,CreateUserID,CreateUserName,
LastSaveUserID,LastSaveUserName,
CheckedUserID,CheckedUserName,
PrintUserID,PrintUserName在记录保存和修改时,直接把名字也存进去。
这样不用建视图来查询。
这样的数据冗余应该可以接受吧?
只要你在insert update的时候不嫌烦,就可以接收....
create or replace view v_c as
select A.UserFile,
(select B.UserName from B where B.UserID=A.CreateUserID) as UserName1,
(select B.UserName from B where B.UserID=A.LastSaveUserID) as UserName2,
(select B.UserName from B where B.UserID=A.CheckedUserID) as UserName3,
(select B.UserName from B where B.UserID=A.PrintUserID) as UserName4
from A
这种设计方式要看情况,用户id、name这么来用感觉没有必要,显得太罗嗦,
我这里这么用是一些规格编码,为了防止编码出错,把内容也加入,为了便于出错时查找原因方便
不提倡lz这种做法,不应该为了看着方便、用着顺手就这样设计,这样code的作用就没有意义了,结构也不清晰,就像我们编程一样,不能为了简便就让代码逻辑结构不清晰。
那你想得太简单了,可以在update的时候一并修改。你注意一下我的回答,update的时候需要注意一下,如果能忍受这样的代价就这么做