在视图中连接表

时间:2011-08-12 16:15:12

标签: tsql join

我现在担心我没有正确规范表格,因为现在我看不到加入它们的方法;

我有1个表,其中2列称为“问题”,另一个表称为“10个列的答案”,一个用于userId,然后是9个列,其中包含每个用户的所有答案(int)。

一切都适用于插入和更新,但是我有一段时间试图创建一个视图,该视图将显示所有问题,每个用户以及他们对每个问题的每个回答。

问题表;

CREATE TABLE [dbo].[Questions](
[questionId] [int] IDENTITY(1,1) NOT NULL,
[question] [nvarchar](max) NULL,
CONSTRAINT [PK_Questions] PRIMARY KEY CLUSTERED 
(
[questionId] ASC
 )WITH (
        PAD_INDEX  = OFF, 
        STATISTICS_NORECOMPUTE  = OFF, 
        IGNORE_DUP_KEY = OFF,       
        ALLOW_ROW_LOCKS  = ON, 
        ALLOW_PAGE_LOCKS  = ON
       ) ON [PRIMARY]
 ) ON [PRIMARY]

答案表;

CREATE TABLE [dbo].[Answers](
[empID] [nvarchar](10) NOT NULL,
[q1] [int] NULL,
[q2] [int] NULL,
[q3] [int] NULL,
[q4] [int] NULL,
[q5] [int] NULL,
[q6] [int] NULL,
[q7] [int] NULL,
[q8] [int] NULL,
[q9] [int] NULL,
 CONSTRAINT [PK_Answers] PRIMARY KEY CLUSTERED 
(
[empID] ASC
)WITH (
       PAD_INDEX  = OFF, 
       STATISTICS_NORECOMPUTE  = OFF, 
       IGNORE_DUP_KEY = OFF,   
       ALLOW_ROW_LOCKS  = ON, 
       ALLOW_PAGE_LOCKS  = ON
      ) ON [PRIMARY]
) ON [PRIMARY]

我没有尝试过任何作品,所以你们所有可以帮助我避免重新制作表格的想法都会非常感激!

提前感谢您的帮助。

亚历

2 个答案:

答案 0 :(得分:2)

在我看来,你的答案表应该有问题表的外键。除非答案可以引用多个问题,在这种情况下,我会说你应该考虑像映射/关系表这样的表格,它有答案和问题表格的FK。

答案 1 :(得分:0)

我认为您可能需要调查pivot tables才能完成任务。