2009-07-14 13 views
-1

나는 8 개의 열을 포함하는 하나의 데이터베이스 테이블을 가지고 있습니다. 열 중 하나는 IsAdmin (데이터 유형은 Bit)입니다. 로그인 한 사용자가 관리자 인 경우에만 그리드보기에 사용자 목록을 표시해야합니다.데이터 가져 오기

어떻게하면됩니까? 어떤 절이 사용됩니까?

+0

사용자는 ** 관리자 만 인 경우 ** IsAdmin ** 열을 표시하거나 관리자 인 경우 모든 기록을 표시해야합니까? – TheVillageIdiot

+0

추가 정보가 필요합니다. 무엇에 서명 했습니까? 어떤 기술/프레임 워크를 사용하고 있습니까? 그가 관리자 인 경우 –

+0

모든 레코드. – MAC

답변

2

나는 당신을 올바르게 이해하고 있는지 잘 모른다. 당신이 찾고있는 "사용자 목록"이 당신이 선택하고있는 테이블이기도합니까? 내 이해는 이것이 당신이 필요로하는 것입니다 :

if exists (
    select * 
    from MyUserList 
    where IsAdmin = 1 
    and UserName = SUSER_NAME() 
) 
begin 
    select * 
    from MyUserList /* Or whatever you need to do if the user is admin */ 
end 
else 
begin 
/* Do whatever you need to do if the user is not an admin */ 
end 
0

아마도 SQL 대신 응용 프로그램에서이 작업을 수행하는 것이 좋습니다. 응용 프로그램이 누가 누가 관리자인지 확인하고 세션 또는 쿠키에 넣고 페이지가로드 될 때 세션/쿠키 검사를 수행하여 사용자가 관리자인지 확인하고 정보를 표시하는지 확인합니다.

SQL에서 원할 경우 테이블 구조 및 테이블 이름과 같은 몇 가지 추가 정보를 제공해야합니다. 당신이 절을 필요로하지만, 응용 프로그램에서 비즈니스 로직에 의해 처리되어야처럼 매트

1

은 나에게 소리를하지 않습니다.

로그인 한 사용자가 관리자 인 경우에만 목록을 표시하려면 사용자가 관리자가 아닌 경우 쿼리 실행에 아무런 포인트가 없습니다. 불필요한 db에 대한 왕복입니다.

대신, 응용 프로그램에서 당신이 선택해야로서,

0

이 솔루션은 너무 간단하다 "로그인 한 사용자가 관리자 인 경우 다른하지 않는 그리드보기를 채 웁니다"라고 어떤 논리를 가지고 특정 데이터 사용자가 관리자의 역할과 그 밖의 다른 데이터를 선택하거나 아무 것도 할 수 있으므로 다음 코드한다면 :이 사용자 ID 및 자신의 역할에 관련된 데이터를 선택합니다이 경우

select * from [UserList] where IsAdmin = @UserRole and UserID = @UserID 

합니다.

문제를 이해하는 데 도움이되기를 바랍니다.