2014-11-27 3 views
-3

У меня есть 3 таблицы, в которых роль имеет ряд разрешений который находится в Roledetail таблице я должен узнать PermissionName, RoleId, RoleName, RoleDescription из этих таблиц:Регистрация 3 таблицы в хранимой процедуре

[Role], Permission, RoleDetail 

Таблица [Role] имеет эти колонки:

RoleID, RoleName, RoleDescription 

и таблица Permission имеет следующие столбцы:

PemissionId, PermissionName 

в то время как таблица RoleDetail имеет следующие столбцы:

RoleDetailId, PermissionId, RoleID 

Я хочу, чтобы отобразить столбцы RoleId, RoleName, RoleDescription, PermissionName на основе данного permissionId из RoleDetail таблицы и вот то, что я до сих пор

Alter PROCEDURE usp_GetRoleDetails 
@proleId int  
AS 
BEGIN 

    SET NOCOUNT ON; 

Select r.RoleId,r.RoleName,r.[Description],permissionName from 
[Role]r 
Inner join RoleDetail d on d.RoleDetailId = r.RoleID 
Inner join Permission p on p.PermissionId = d.PermissionId 
where r.RoleId = @proleId 


END 
GO 
+1

[SO] не является службой написания кода: вы пытались создать инструкцию 'select' (эта кабина, завернутая в сохраненный процесс позже)? – Richard

+0

Почему бы просто не использовать 'join'? –

+1

Потому что это означало бы, что он должен был бы изучить SQL и использовать собственную энергию. Кажется, что просить других людей сделать основную работу является основной компетенцией многих разработчиков. – TomTom

ответ

3

Я думаю, что вы хочу этого

Select RoleId,RoleName,RoleDescription,permissionName from 
RoleDetail 
Inner join [Role] on RoleDetail.RoleDetailId = Role.RoleID 
Inner join Permission on Permission.PemissionId = RoleDetail.PemissionId 
+0

в таблице roledetail ролик имеет несколько разрешений. И я должен узнать все имя разрешения в соответствии с разрешением, но покажет только одну запись. – Felixerity

+0

sir wat я уже пробовал до сих пор обновляется в моем вопросе nd посмотреть, где я делаю неправильно – Felixerity

+0

Попробуйте это 'Select R.RoleId, R.RoleName, P.Permission from Role R inner join RoleDetail D на R.RoleId = D.RoleId Inner join Permission P на D.PermissionId = P.PermissionId, где R.RoleId = @ proleId' –

0

Простой SQL joi n сделал бы трюк. SQL объединяет помощь в получении данных из нескольких таблиц, как в вашем случае. Все, что вам понадобится для соединения, должно состоять в том, чтобы таблицы содержали первичный ключ - отношение внешних ключей, например столбцы PermissionId и RoleDetail в вашем случае. Но будьте очень осторожны, объединения также могут дать вам дубликаты записей, если предложение о присоединении не является правильным. См. here для введения в SQL-соединения.

+0

предоставление ссылки без каких-либо подробностей не является приемлемым способом ответа на сайте. Пожалуйста, разверните свой ответ с некоторой соответствующей информацией из ссылки, добавив текст цитаты, где это необходимо, и попытайтесь объяснить, почему это поможет в некоторых ваших собственных словах. – Tanner

+0

Разработчик явно мог бы изучить еще кое-что по этой теме. Даже простой поиск в Google показал бы ему, что присоединение было ответом на его проблему. Поэтому мой ответ был предназначен, чтобы заставить его учиться на сайте - ленивый ответ на ленивый вопрос. Извините, если я стал грубым или бесполезным. – Arunster

+0

Проблема в том, что ссылки могут меняться со временем, но если вы разместите некоторые детали в своем ответе, они останутся. прочитайте это: http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers и улучшите или удалите свой ответ, в противном случае он, скорее всего, автоматически получит помеченный как слишком короткий, и после того, как он будет рассмотрен, он будет удален для ответа на ссылку. – Tanner

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