我有兴趣找出哪种问卷中存在哪些问题。
因此,我尝试了以下操作,以便输出调查表Welcome Questionnaire
中存在的问题,但是在行中却没有返回结果:
SELECT `questionnaire`.`questionnaireName`, `questionnaireQuestions`.`questionID`,`question`.`question`
FROM `questionnaire`
INNER JOIN `questionnaireQuestions` ON `questionnaire`.`questionnaireID`=`questionnaireQuestions`.`questionID`
INNER JOIN `question` ON `questionnaire`.`questionnaireID` = `question`.`questionID`
WHERE `questionnaire`.`questionnaireName` = "Welcome Questionnaire";
我认为我必须在questionnaireID
上进行2次内部联接,任何人都可以强调我在这里出错的地方。
我应该得到这个:
答案 0 :(得分:2)
从图中所示的表结构来看,您正在错误的字段上联接。您应该在questionnaireQuestions
上将questionnaire
插入questionnaireID
,在questionnaireQuestions
上将question
加入questionID
,即
SELECT `questionnaire`.`questionnaireName`, `questionnaireQuestions`.`questionID`,`question`.`question`
FROM `questionnaire`
INNER JOIN `questionnaireQuestions` ON `questionnaire`.`questionnaireID` = `questionnaireQuestions`.`questionnaireID`
INNER JOIN `question` ON `questionnaireQuestions`.`questionID` = `question`.`questionID`
WHERE `questionnaire`.`questionnaireName` = "Welcome Questionnaire";
请注意,使用表别名可以使查询更易于阅读;和反引号仅需转义表/列名称中的特殊字符,因此通常可以省略:
SELECT qa.questionnaireName, qq.questionID, qs.question
FROM questionnaire qa
INNER JOIN questionnaireQuestions qq ON qa.questionnaireID = qq.questionnaireID
INNER JOIN question qs ON qq.questionID = qs.questionID
WHERE qa.questionnaireName = "Welcome Questionnaire";
答案 1 :(得分:0)
或者,更少键入...
SELECT a.questionnaireName
, b.questionID
, b.question
FROM questionnaire a
JOIN questionnaireQuestions ab
ON ab.questionnaireID = a.questionnaireID
JOIN question b
ON b.questionID = ab.questionID
WHERE a.questionnaireName = "Welcome Questionnaire";