2014-09-04 92 views
0

我工作的一個SQL查詢返回誰有權訪問同一存儲用戶的列表。商店設置爲需要一個地區和一個州。如果Store,State和Region爲NULL,並且'Access'不爲空,則用戶可以完全訪問所有商店。例如...現在返回值,所有行符合條件

LocationID | UserID | StoreID | State | RegionID | Access | 
    1   1   NULL   NULL   NULL   1 

,如果用戶擁有完全訪問權限,除了在商店123,那麼就會有這樣爲自己表項....

LocationID | UserID | StoreID | State | RegionID | Access | 
    1   1   NULL   NULL   NULL   1 
    2   1   123   NULL   NULL   NULL 

所以這告訴軟件他們有完整的訪問權限,但是在商店123中,他們具有NULL(否)訪問權限。

我試圖做的是選擇訪問一個特定的商店的所有用戶。我有現在這樣它拉的所有用戶標識的地方......

StoreID IN (SELECT StoreID FROM @tblStores) 
OR RegionID IN (SELECT RegionID FROM @tblStores) 
OR StateID IN (SELECT State FROM @tblStores) 

這工作得很好拉,其中STOREID,州或RegionID匹配所有用戶(有也是對訪問進行檢查NOT NULL)

我的問題來爲具有完全訪問EXCEPT地方的人們。我如何能夠選擇StoreId/State/RegionID爲空的用戶,除非他們有與商店/州/地區id相匹配的另一個條目並且訪問爲空?

所以,現在如果我跑我的查詢試圖找到所有用戶在商店123,它返回用戶名1,因爲用戶ID 1有一個排的一切是NULL和訪問不爲空。我需要檢查是否有UserID1 NULL訪問STOREID 123,國家(無論),或RegionID(什麼)......

上的快捷方式的任何想法做到這一點?有沒有一種方法可以說只在所有條件匹配的情況下才拉取用戶ID?

回答

1

您需要添加這樣的事情:

AND NOT用戶id在(從那裏STOREID = ...和訪問爲空選擇)

相關問題