je les 2 requêtes suivantes qui fonctionnent comme prévu:Combinant deux requêtes
declare @user varchar(3)
declare @phrase varchar(255)
set @user = 'xyz'
set @phrase = '%nav%'
select ug.*, wap.*, w.*
from user_groups ug
inner join widget_access_permissions wap on ug.id = wap.allowed
inner join widgets w on wap.widget_id = w.widget_id
where ug.employee_code = @user
and w.widget_name like @phrase
select w.widget_id, ug.*, wdp.*, w.*
from user_groups ug
inner join widget_deny_permissions wdp on ug.id = wdp.denied
inner join widgets w on wdp.widget_id = w.widget_id
where ug.employee_code = @user
and w.widget_name like @phrase
La première requête affiche les enregistrements pour tous les widgets qui @user a accès en fonction du @phrase fourni. La deuxième requête affiche les enregistrements de tous les widgets auxquels @user n'a pas accès en fonction de la @phrase fournie.
Comment puis-je combiner ces 2 requêtes en 1, donc si quelqu'un a un accès basé sur un groupe, mais parce qu'il est dans un autre groupe qui est refusé dans la table de refus, il ne voit pas les résultats?
Je ne sais pas si ma dernière phrase est logique ...
EDIT: Les noms de table Ajouté, des colonnes de table et un peu de données d'échantillon:
user_groups
table
id
display_value
employee_code
dept
persnl_typ_code
sample row 1
1000
group 1
xyz
i.t.
gen
sample row 2
1008
group 2
xyz
i.t.
gen
==========
widget_access_permissions
table
id
widget_id
allowed
sample row
0
0
1000
==========
widget_deny_permissons
table
id
widget_id
denied
sample row
0
0
1008
==========
widgets
table
widget_id
widget_name
widget_description
widget_header
widget_sub_header
widget_content
sample row
0
widget name goes here
widget description goes here
widget header goes here
widget sub header goes here
widget content goes here
Votre hypothèse était correcte. – oshirowanen