0
votes

Sélectionnez les données de la table en fonction de la condition dans la même table

J'ai une table appelée autorisations code> qui se compose des champs suivants: persméviste, userid, deptid, userdefault, usermanager, usernetwork code>

le userdefault, Usermanager, UseNetwork Code> Les valeurs peuvent être soit true code> ou false code>. P>

Donc, j'ai les données suivantes dans le tableau: p>

Persmenseid, UserID, Deptid, UserDefault, Usermanager, UseNetwork Rangée 1: 1, 1, 1, vrai, faux, faux Rangée 2: 1, 1, 2, True, True, FALSE CODE> P>

Fondamentalement, je souhaite récupérer le département de l'utilisateur. Donc, si le champ usermanager code> est défini sur true code>, je veux aussi la récupérer. P>

select 
    * from Permissions permi
    inner join Permissions permi2
on permi.UserId = permi2.UserId
where permi.UserId = 1

and permi.UBR_CH_DEFAULT = 'True' and permi.UBR_CH_MANAGER = 'True'


0 commentaires

3 Réponses :


0
votes

Si vous voulez les deux rangées, vous semblez vouloir:

select p.*
from Permissions
where p.UserId = 1 and
      p.UBR_CH_DEFAULT = 'True' ;


1 commentaires

Je veux vérifier si l'utilisateur est un gestionnaire ou un réseau d'utilisateurs. S'il en est un parmi ceux-ci, puis me renvoie les rangées.



0
votes

Essayez d'utiliser l'opérateur ou code> dans votre joindre code> instruction:

select 
* 
from Permissions permi
inner join Permissions permi2
      on permi.UserId = permi2.UserId OR permi.UserManager = 'true'
where permi.UserId = 1    
and permi.UBR_CH_DEFAULT = 'True' and permi.UBR_CH_MANAGER = 'True'


0 commentaires

0
votes

Vous pouvez utiliser existe et si vous voulez un utilisateur userid : xxx

si vous souhaitez vérifier n'importe quel userid : < / p> xxx

voir le Démo .


6 commentaires

Disons que je veux vérifier si la valeur est true pour l'un des usermanager, usernetwork . Si l'un de ces champs est vrai, puis me renvoie cet enregistrement. Comment puis-je atteindre cela?


C'est pourquoi j'utilise ou : usermanager = 'true' ou usernetwork = 'true' . Si l'une d'entre elles est vraie, toutes les lignes de cet ID utilisateur seront retournées.


Supposons que dans le futur, j'aurai plus de champs tels que useradmin , userdispatcher .. dois-je ajouter ou mot-clé pour chaque colonne? Vous n'êtes pas une façon optimisée d'y parvenir?


Quel est le type de données de ces colonnes?


Le type de données est le même varchar . Fondamentalement, ces champs représentent certains accès que l'utilisateur peut avoir.


Puisque c'est Varchar, vous devez utiliser plusieurs ou s. Si c'était bit , il serait quelque chose de plus facile comme col1 + col2 + .....> 0