2013-12-07 4 views
0


Может кто-нибудь, скажите, пожалуйста, как я могу получить запись пользователя, а это role_desc. Ниже приведены мои таблицы.Запрос 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

Я не думаю, что нет ничего плохого с вашим запросом. Одной из причин этого может быть то, что есть два пользователя с одинаковым именем, а один - администратор и другой супервизор. – 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; 

Вы можете запросить прочь UserID, так как вы знаете, это будет уникальным.

1

Вы можете проверить одни и те же имена пользователей (даже идентификатор пользователя отличается), с более чем одним назначением ролей, используя следующий запрос.

Выберите COUNT (Name), NAME из группы tblUSERS по Имени Имея COUNT (имя)> 1

Смежные вопросы