SURVEYS
表:
SurveyID
UserID
Question
Choice1
Choice2
Choice3
RESPONSES
表:
UserID
SurveyID
Answer
第一个愿望(实现):向我展示用户28发起的所有调查:
SELECT *
FROM Surveys
WHERE Surveys.UserID = 28
第二个愿望(实现):向我展示用户28已回答的所有调查:
SELECT *
FROM Surveys
INNER JOIN Responses ON Surveys.SurveyID = Responses.SurveyID
WHERE Responses.UserID = 28
第三个愿望(未实现):
显示用户28未启动的所有调查,以及用户28尚未回答的所有调查…从调查中选择*在surveys.surveyid=responses.surveyid where surveys.userid<gt;28和responses.userid<gt;28[或者:where not surveys.userid=28或responses.userid=28]
第三个查询将删除用户28的记录,但将显示同一调查的其他实例。例如,假设用户29回答了调查。将返回一行,因为where不禁止用户29的记录。
我想到使用子查询——类似于:select*from surveys.userid<gt;28 and surveys.surveyid<gt;(select responses.surveyid where responses.userid=28)——但这不起作用,因为子查询可以轻松生成多行。
解决办法是什么?