我正在嘗試創建視圖VW_Checks。我正在使用STUFF合併列'Platforme'和'Systemname'中的記錄以避免冗餘數據的冗長列表。篩選使用子查詢的視圖
的觀點:
CREATE VIEW [dbo].[VW_Checks] WITH SCHEMABINDING AS
SELECT DISTINCT C.CheckID AS CheckID, C.CheckTitle as CheckTitle,
STUFF((SELECT ', ' + PLATFORMNAME
FROM dbo.CHECK_PLATFORM CPP
WHERE CPP.CHECKID = C.CHECKID
for xml path('')),1,1,'') AS Platformname,
STUFF((SELECT ', ' + SYSTEMNAME
FROM dbo.CHECK_SYSTEM CSS
WHERE CSS.CHECKID = C.CHECKID
for xml path('')),1,1,'') AS Systemname
FROM dbo.[CHECK] C INNER JOIN
dbo.CHECK_CATEGORY CC ON C.CHECKID = CC.CHECKID
INNER JOIN dbo.CATEGORY CAT ON CC.CATEGORYID = CAT.CATEGORYID
INNER JOIN dbo.CHECK_SYSTEME CS ON CS.CHECKID = C.CHECKID
INNER JOIN dbo.CHECK_PLATFORM CP ON CP.CHECKID = C.CHECKID
的觀點是好的,因爲它是(意思是它正好說明了我想讓它顯示的),但是當我試圖篩選我的看法,這是行不通的。我的問題
例如:
SELECT *
FROM VW_Checks VW_C
WHERE CONTAINS(VW_P.Platformname,'iOS')
在SELECT語句的WHERE子句上面並沒有在所有的工作,彷彿它甚至不存在。 由於VW_P.Platformname
是組合列(使用子查詢),因此我無法在我的視圖上創建唯一索引。
當我嘗試創建唯一索引錯誤消息: Error: 10127, Severity: 16, Cannot create unique index I_VW_Checks on view VW_Checks because it contains one or more subqueries. Consider changing the view to use only joins instead of subqueries. Alternatively, consider not indexing this view.
我怎樣才能改變我的看法/添加索引到它,所以我可以正確地過濾,而不會失去我的合併記錄?