我有两个表“问答”。问题表的列为“ QuestionType”,如果问题的类型为文本,则其值为1;如果问题具有预定义的答案选项(例如,单选,下拉菜单),则值为2。
我正在尝试使用T-SQL,如果答案有价值,我只需要针对问题回答。现在,对于QuestionType,如果value为null或为空,则意味着没有答案将被填满,但对于QuestionType 2,即使存在答案,它也将始终为null,因为存在另一个包含该信息的表。
我需要存在值的Answer,即使在Answer中为Null值,也需要questionType为2
我这样做了,但条件排除了我不想要的QuestionType 2
FROM [dbo].[MyTable] AS sur
INNER JOIN [dbo].[SurveyQuestions] AS surQus ON sur.Id = surQus.SurveyId
INNER JOIN [dbo].[Questions] AS qus ON surQus.QuestionId = qus.Id
LEFT JOIN [dbo].[Responses] AS res ON res.SurveyId = sur.Id
LEFT JOIN [dbo].[Answers] AS ans ON res.Id = ans.ResponseId AND qus.Id = ans.QuestionId
LEFT JOIN [dbo].[AnswerOptions] AS ansOpt ON ans.Id = ansOpt.AnswerId
LEFT JOIN [dbo].[QuestionOptions] AS qusOpt ON ansOpt.QuestionOptionId = qusOpt.Id
WHERE con.Id = '00000011-0013-4D34-8888-7E7189CA348U'
AND (qus.QuestionType ='1' AND ans.Value IS NOT NULL ) //???????? NEED HELP HERE
答案 0 :(得分:1)
如果我理解您的问题,则需要一个OR语句,每组条件都在各自的括号中,并由一组主要的括号包围。
FROM [dbo].[MyTable] AS sur
INNER JOIN [dbo].[SurveyQuestions] AS surQus ON sur.Id = surQus.SurveyId
INNER JOIN [dbo].[Questions] AS qus ON surQus.QuestionId = qus.Id
LEFT JOIN [dbo].[Responses] AS res ON res.SurveyId = sur.Id
LEFT JOIN [dbo].[Answers] AS ans ON res.Id = ans.ResponseId AND qus.Id = ans.QuestionId
LEFT JOIN [dbo].[AnswerOptions] AS ansOpt ON ans.Id = ansOpt.AnswerId
LEFT JOIN [dbo].[QuestionOptions] AS qusOpt ON ansOpt.QuestionOptionId = qusOpt.Id
WHERE con.Id = '00000011-0013-4D34-8888-7E7189CA348U'
AND (
(qus.QuestionType ='1' AND ans.Value IS NOT NULL )
OR
(qus.QuestionType ='2')
)