2013-12-07 53 views
0


有人可以告诉我如何获取用户的记录,它是role_desc。以下是我的表格。在用户表中使用角色id获取角色的T-SQL查询

tblUSERS: UserID PK 
      Name 
      RoleID FK 

tblROLES: RoleID PK 
      Role_Desc 

我的查询如下

select Name,Role_Desc from tblUSERS 
     inner join tblROLES on tblUSERS.RoleID = tblRoles.RoleID; 

让说,我有纪录tblUSER如下

1  Zeb  2 

,并在角色表我有如下记录

1  Admin  
2  Supervisior 

我想得到以下结论翼结果

Zeb  Supervisior 

不会导致像下面

Zeb  Admin 
Zeb  Supervisior 

请给我你的建议..
在此先感谢

+1

我不觉得有什么不对您的查询。结果的一个原因可能是有两个用户名称相同,一个是admin和另一个supervisitor。 – bjorsig

+1

这个样本数据给你的结果是不可能的:http://sqlfiddle.com/#!3/277a4/2。唯一的方法是你有两个用户称为Zeb。一个作为主管,一个作为管理员 –

回答

2

根据与SqlFiddle创建表和数据看来,你的查询很好。

它看起来像你有一个用户具有不同的角色相同的名称,因此你看到你看到的结果。

尝试运行此查询,以确认:

select UserID,Name,Role_Desc from tblUSERS 
    inner join tblROLES on tblUSERS.RoleID = tblRoles.RoleID; 

你可能想查询离用户ID的,因为你知道这将是独一无二的。

1

您可以使用以下查询来检查相同的用户名(即使用户标识不同),并分配多个角色。

SELECT COUNT(名称),从向tblUsers组名由名称有COUNT(名称)> 1