我工作的一個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?