我有以下表模式在SQL Server 2005中,我想将它变成非规范化一些查询我写,直到我可以做结构变化永久的索引视图。

在表如下

Writing
(
DocumentSerial int
Grader1_ID int
Grade_1 int
Grader2_ID int 
Grade_2 int 
Grader3_ID int 
Grade_3 int
)

Users
(userID int,
firstname,
lastname
)

我想与一个单独的行,每个分级器/级/文件组合,其中平地机或者是分级机1的表,平地机2,或分级机3

在查看我写用途UNION,所以也没有索引:

select documentSerial,grader1_id as grader_id, grade_1 as grade ,1 as sequence
 from Writing w inner join User U on w.grader1_id=u.userid
UNION
select documentSerial,grader2_id as grader_id, grade_2 as grade ,2 as sequence
 from Writing w inner join User U on w.grader2_id=u.userid
UNION
select documentSerial,grade31_id as grader_id, grade_3 as grade ,3 as sequence
 from Writing w inner join User U on w.grader3_id=u.userid

问题是 - SQL不能索引与工会视图...

有帮助吗?

解决方案

为什么一定要索引视图时,你可以使用一个适当的表:

SELECT x.*
  INTO normalized_table
  FROM (select documentSerial,grader1_id as grader_id, grade_1 as grade ,1 as sequence
          from Writing w 
          join User U on w.grader1_id = u.userid
        UNION ALL
        select documentSerial,grader2_id as grader_id, grade_2 as grade ,2 as sequence
          from Writing w 
          join User U on w.grader2_id = u.userid
        UNION ALL
        select documentSerial,grade31_id as grader_id, grade_3 as grade ,3 as sequence
          from Writing w 
          join User U on w.grader3_id = u.userid) x

据我所知,你可能要视图,以便您不必同步数据的麻烦。唯一的其他选择是不索引视图...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top