2017-03-08 14 views
0

SQL Server 2014で作業します。質問の管理アプリケーションです。私のアプリケーションにはテーブル構造があります。SQLクエリテンプレート1の質問と回答の選択方法。より良いアプローチがありますか、私と共有してください。複数テーブルの列の一致値を選択する方法

enter image description here

サンプルデモ入力は、次のとおりです。

GO 
INSERT [dbo].[tblQuestionAns] ([QuestionAnsId], [Question], [Ans]) VALUES (1, N'Hello?', N'Hello') 
GO 
INSERT [dbo].[tblQuestionAns] ([QuestionAnsId], [Question], [Ans]) VALUES (2, N'World?', N'World') 
GO 
INSERT [dbo].[tblQuestionAns] ([QuestionAnsId], [Question], [Ans]) VALUES (3, N'Animal?', N'Animal') 
GO 
INSERT [dbo].[tblQuestionAns] ([QuestionAnsId], [Question], [Ans]) VALUES (4, N'Ocean?', N'Ocean') 
GO 
INSERT [dbo].[tblQuestionAns] ([QuestionAnsId], [Question], [Ans]) VALUES (5, N'Human?', N'Human') 
GO 
INSERT [dbo].[tblQuestionTemplate] ([QuestionTemplateId], [Q1], [Q2], [Q3], [Q4], [Q5]) VALUES (1, 1, 3, 5, 4, 2) 
GO 
INSERT [dbo].[tblQuestionTemplate] ([QuestionTemplateId], [Q1], [Q2], [Q3], [Q4], [Q5]) VALUES (2, 1, 5, 3, 2, 4) 
GO 

答えて

0

次の結果をしたいですか?

SELECT tt.QuestionTemplateId,qa.Question,qa.Ans FROM tblQuestionTemplate AS tt 
CROSS APPLY (VALUES(Q1),(Q2),(Q3),(Q4),(Q5)) c(Q) 
INNER JOIN tblQuestionAns AS qa ON qa.QuestionAnsId=c.Q 
 
QuestionTemplateId Question Ans 
1 Hello? Hello 
1 Animal? Animal 
1 Human? Human 
1 Ocean? Ocean 
1 World? World 
2 Hello? Hello 
2 Human? Human 
2 Animal? Animal 
2 World? World 
2 Ocean? Ocean 
関連する問題