关于多表查询的问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 02:03:59
问题描述:
现有5个表,要求每个部门的员工只能查看自己部门的通知,并且同部门职位高的可以查看职位低的通知,职位同级的不能相互查看,除非是发给自己的。
tuser(用户表:id,username,<d_id部门>,j_id<职位id>)

department(部门表:id,depName<部门名>)

jobs(职位表:id,jobName<职位名>,code<判断职位大小的数字代号>)

notice(通知表:id,cont<内容>,senderName<发送者名字>)

to_users(接受通知的用户:id,notice_id<通知id>,toName(接受者名字))

哪位高手指点一下啊,小弟不胜感激!

declare @a varchar(10)
set @a=<想要查看的员工姓名>
select notice from notice as n,to_users as t,
(select code,d_id from jobs join tuser on jobs.id=tuser.j_id where username=@a) as c
where n.id=t.notice_id and (t.toname=@a or t.toname in (select username from tuser join jobs on jobs.id=tuser.j_id where d_id=c.d_id and code<=c.code ))
这样就行了,在这里我假设code越大的,级别越高,你可以视你的设置改变