2014-02-11 204 views
1

大家好,我很抱歉这个愚蠢的问题,但我遇到了一个问题,希望你们能指点我 - 正确的方向请耐心等待我是一个完整的初学者。 我有三个表的设置,看起来大致如下:SQL缺少记录问题

table 1 quizquestions 
Question ID, etc. 
Int 

table 2 quizanswers 
AnswerID, QuestionID,correct Answer 
Int   Int   Bool 

table 3 useranswers 
UserAnswerID, AnswerID, QuestionID 
Int    Int   Int 

我的问题是,当我运行查询像这样:

SELECT A.AnswerID AS Answer, UA.AnswerID AS UserAnswer 
FROM quizanswers AS A, useranswers UA 
WHERE A.CorrectAnswer = TRUE 
    AND UA.QuestionID 
    AND A.QuestionID = X 

查询将返回一个结果类似如下:

Answer UserAnswer 
    1  1 

如果在quizanswers和useranswers表中都有记录,则查询将成功返回结果。然而,问题在于useranswers表中没有记录时,不会返回任何结果。如果上面的代码不够清楚,我很抱歉,很多预先感谢。

回答

1

我不知道,我得到这个问题背后的商业案例,但是这会给你quizanswers记录即使在useranswers没有correspondning记录:

SELECT A.AnswerID AS Answer, UA.AnswerID AS UserAnswer FROM quizanswers AS A LEFT JOIN useranswers UA ON UA.QuestionID = A.QuestionD WHERE A.CorrectAnswer = TRUE AND A.QuestionID = X 
1

这将在MSSQL中工作我相信我没有MySQL的正确的空函数,但逻辑应该是相同的。

SELECT A.AnswerID AS Answer, UA.AnswerID AS UserAnswer 
FROM quizanswers AS A LEFT OUTER JOIN useranswers UA 
ON UA.QuestionID = A.QuestionID 
WHERE ISNULL(A.CorrectAnswer, FALSE) = TRUE