我有以下2個查詢其預期工作:結合兩個查詢
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
第一個查詢顯示的記錄進行@user訪問基於所提供的任何@phrase部件。第二個查詢顯示@user根據提供的@phrase無法訪問的任何小部件的記錄。
我如何結合這兩個查詢轉換爲1,所以如果有人基於一組接入,而是因爲他是這是在拒絕表拒絕另一組,他沒有能看到的結果嗎?
我不知道如果我的最後一句話是有道理的......
編輯:添加的表名,表列和一個小樣本數據:
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
,如果他是在被允許接入1組,在被拒絕訪問另一組他應該沒有獲得小部件。如果他在一個允許訪問的組中,並且不屬於被拒絕訪問的任何組,則他只應該獲取該組件。 – oshirowanen 2011-02-02 11:47:01
但是,你的腳本是可以工作的,所以你可能錯過了上面的那個「他應該得到小部件」的句子中的「不」。 – oshirowanen 2011-02-02 11:51:38
你R右,點指出:) @oshirowanen – 2011-02-03 05:08:48