【问题标题】:Getting list of questions that has not been shown or answered获取未显示或未回答的问题列表
【发布时间】:2019-03-25 16:57:12
【问题描述】:

我有两张桌子:

问题表包含:

然后我有另一个名为

的表

UserAnswerQuestion 包含:

这有通过question_id提到的问题

问题是每次用户回答问题时,我都会在 db 中创建一行:

question_id user_id 已回答,然后我检查答案是否正确,如果正确,我将通过作为 True,否则我将通过作为 false。

好的,从现在开始一切正常,我无法得到的是我正在创建一个方法,它返回给我 nextQuestion 未回答,但我无法正确执行此方法。

我想要的是有一个查询,首先返回用户尚未回答的所有问题,然后另一个查询仅返回用户尚未回答的问题。

注意:添加此显示的属性是因为我想首先迭代其他问题,而不是显示用户最近失败的问题。

问题清楚了吗?

我尝试了什么?

我已尝试获取问题List<UserAnswerQuestion> findAllByUserEmailAndPassedFalseAndShownFalse(String email);,但它不起作用,因为使用此表我可以知道用户每次尝试的每个答案,例如,如果我有一个有 4 个答案和 1 个答案的问题正确,该表可以包含具有相同 question_question_id 的 4 行,因为用户可能失败了 3 次,然后在第四次正确回答。

编辑

我已经有了用户可以用这种方法回答的问题:

public List<Question> getAllQuestionsThatUserCanAnswer(String email, Long topic){
        List<Question> mList = this.questionRepository.findAllByTopicParentId(topic);
        if(mList==null) return null;
        List<UserAnswerQuestion> userAnswerQuestionList = this.userAnswerQuestionRepository.findAllByUserEmail(email);

        for (UserAnswerQuestion userAnswerQuestion : userAnswerQuestionList) {
            if(mList.contains(userAnswerQuestion.getQuestion())){
                if(userAnswerQuestion.getPassed()){
                    mList.remove(userAnswerQuestion.getQuestion());
                }
            }
        }
        return mList;
    }

现在我正在尝试执行此方法的 getNext,但我不知道如何对其进行迭代。

【问题讨论】:

    标签: sql spring hibernate jpa spring-data-jpa


    【解决方案1】:

    专注于解决您的问题的 SQL 查询

    select * from Question q
    left join Answer a on q.id = a.question_id
    where a.id is null OR (a.passed != 'true' AND a.user_id = 1)
    order by a.passed
    

    检查划痕here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多