我正在嘗試計算問卷系統的響應。我想在一個表格中顯示結果(問題,選項,回覆數量)。我寫了一個可以正常工作的查詢,但沒有顯示所有的選項,也沒有顯示任何響應。SQL表連接查詢
我查詢
SELECT R.QuestionID, Q.QuestionName, A.OptionName, COUNT(R.OptionID) AS Responses, A.OptionID
FROM Response AS R
INNER JOIN
Question AS Q ON Q.QuestionID = R.QuestionID
INNER JOIN
Option AS A ON R.OptionID = A.OptionID
WHERE (R.QuestionnaireID = 122)
GROUP BY R.QuestionID, Q.QuestionName, A.OptionName, R.OptionID, A.OptionID
數據庫結構:
- 問卷(questionnaireID PK,questionnaireName)
- 問題(questionID PK,questionnaireID FK,questionnaireName)
- 選項(OptionID PK,questionID FK,optionName)
- 響應(ResponseID PK,questionnaireID FK,questionID FK,值)
表定義
CREATE TABLE [dbo].[Questionnaire] (
[QuestionnaireID] INT IDENTITY (1, 1) NOT NULL,
[QuestionnaireName] NVARCHAR (100) NOT NULL,
PRIMARY KEY CLUSTERED ([QuestionnaireID] ASC),
);
CREATE TABLE [dbo].[Question] (
[QuestionID] INT IDENTITY (1, 1) NOT NULL,
[QuestionnaireID] INT NOT NULL,
[QuestionName] NVARCHAR (250) NOT NULL,
PRIMARY KEY CLUSTERED ([QuestionID] ASC),
CONSTRAINT [FK_Question_Questionnaire] FOREIGN KEY ([QuestionnaireID]) REFERENCES [dbo].[Questionnaire] ([QuestionnaireID])
);
CREATE TABLE [dbo].[Option] (
[OptionID] INT IDENTITY (1, 1) NOT NULL,
[QuestionID] INT NOT NULL,
[OptionName] NVARCHAR (150) NOT NULL,
PRIMARY KEY CLUSTERED ([OptionID] ASC),
CONSTRAINT [FK_Option_Question] FOREIGN KEY ([QuestionID]) REFERENCES [dbo].[Question] ([QuestionID])
);
CREATE TABLE [dbo].[Response] (
[ResponseID] INT IDENTITY (1, 1) NOT NULL,
[QuestionnaireID] INT NOT NULL,
[QuestionID] INT NOT NULL,
[Val] NVARCHAR (150) NOT NULL,
[OptionID] INT NULL,
PRIMARY KEY CLUSTERED ([ResponseID] ASC),
CONSTRAINT [FK_Response_Option] FOREIGN KEY ([OptionID]) REFERENCES [dbo].[Option] ([OptionID]),
CONSTRAINT [FK_Response_Question] FOREIGN KEY ([QuestionID]) REFERENCES [dbo].[Question] ([QuestionID]),
CONSTRAINT [FK_Response_Questionnaire] FOREIGN KEY ([QuestionnaireID]) REFERENCES [dbo].[Questionnaire] ([QuestionnaireID])
);
當前數據:
insert into questionnaire values ('ASP.NET questionnaire');
insert into questionnaire values('TEST questionnaire');
insert into question values (2, 'rate our services');
insert into question values (2, 'On scale from 1 to 5, how much youre sleepy?');
insert into question values (2, 'how are you today');
insert into [Option] values (1, 'good');
insert into [Option] values (1, 'bad');
insert into [Option] values (1, 'medium');
insert into [Option] values(2, '1');
insert into [Option] values(2, '2');
insert into [Option] values(2, '3');
insert into [Option] values(2, '4');
insert into [Option] values(2, '5');
insert into [option] values (3, 'fine');
insert into [option] values (3, 'great');
insert into [option] values (3, 'not bad');
insert into [option] values (3, 'bad');
insert into response values(2, 1, 'good', 1);
insert into response values(2, 1, 'good', 1);
insert into response values(2, 1, 'bad', 2);
insert into response values(2, 1, 'good', 1);
insert into response values(2, 2, '1', 4);
insert into response values(2, 2, '3', 3);
insert into response values(2, 2, '4', 5);
insert into response values(2, 2, '5', 8);
希望的輸出
SQL小提琴
你能分享一些樣本數據和你試圖達到的結果嗎?我不確定我在追隨。 – Mureinik 2014-10-17 14:31:03
我已更新該問題。 – ElSS 2014-10-17 14:44:12
請根據樣本數據共享三個表格中的樣本數據和所需的結果。 – Ram 2014-10-17 16:31:55