2009-07-14 10 views
-1

J'ai une table de base de données contenant 8 colonnes. L'une des colonnes est appelée IsAdmin (son type de données est Bit). Je dois montrer la liste des utilisateurs dans une grille si et seulement si l'utilisateur connecté est un admin.Récupération de données

Comment est-ce que je peux faire ceci? Quelle clause est utilisée pour cela?

+0

vous devez montrer à l'utilisateur la colonne ** IsAdmin ** seulement s'il est administrateur ou tous les enregistrements seulement s'il est administrateur? – TheVillageIdiot

+0

Besoin de plus d'informations. Signé dans quoi? Quelles technologies/frameworks utilisez-vous? –

+0

tous les enregistrements s'il est un administrateur. – MAC

Répondre

2

Je ne suis pas tout à fait certain de vous avoir bien compris. La «liste d'utilisateurs» que vous cherchez affiche-t-elle également la table que vous sélectionnez? Ma compréhension est que c'est ce que vous avez besoin:

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

Je recommanderais probablement que cela soit fait dans l'application plutôt qu'en SQL. Laissez l'application faire les vérifications sur qui est un administrateur et placez-le dans une session ou un cookie et quand la page se charge de vérifier la session/le cookie pour s'assurer que l'utilisateur est un administrateur et s'il montre l'information.

Si vous le souhaitez dans SQL, vous devez fournir des informations supplémentaires telles que la structure de la table et les noms de table.

Matt

1

Pour moi, ne sonne pas comme vous avez besoin d'une clause, mais doit être traité par la logique métier dans votre application.

par exemple. Si vous souhaitez uniquement afficher la liste si l'utilisateur connecté est un administrateur, il est inutile d'exécuter la requête si l'utilisateur n'est PAS un administrateur. C'est un aller-retour vers la base de données qui n'est pas nécessaire.

Au lieu de cela, dans votre application juste avoir une certaine logique qui dit « si l'utilisateur signé en est un administrateur de la remplir la vue du réseau, sinon ne pas »

0

La solution est trop simple, comme vous devez sélectionner des données spécifiques si l'utilisateur est en rôle d'administrateur et d'autre une autre donnée peut être sélectionné ou rien, alors ne le code suivant:

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

dans ce cas, vous sélectionnerez les données pertinentes à cet ID d'utilisateur et son rôle.

Espérons que cela est utile selon ma compréhension du problème.

Questions connexes