日期:2014-05-18  浏览次数:20659 次

求两张多主键表的数据过滤的SQL语句。谢谢!
表1:用户角色信息表
字段1:用户代码
字段2:角色代码
主键:用户代码与角色代码两个字段联合做主键

表2:项目人员角色信息
字段1:项目代码
字段2:用户代码
字段3:角色代码
主键:项目代码、用户代码、角色代码三个字段联合做主键

描述一下,就是说,一个用户对应多个角色,一个角色对应多个用户,用户与角色是多对多的关系。

现在要做的事情是,传入一个项目代码,通过这个项目代码,获取到所有的,没有参与该项目的用户代码以及该用户的角色代码。

请问这个存储过程或者SQL语句该怎么写?谢谢大家了!

------解决方案--------------------
create proc Test(@项目代码 varchar(100))
as
begin
select U.*
from 用户角色信息表 U
where not exists (select 1 from 项目人员角色信息 where 项目代码=@项目代码 and 用户代码=T.用户代码)
end
------解决方案--------------------
select * from 项目人员角色信息
where 项目代码=你传的值
and (用户代码,角色代码) not in (select 用户代码,角色代码 from 用户角色信息表)


可以吗?