diff --git a/mo/web/user.py b/mo/web/user.py
index 88c33fc0704fc44e7451041b588a2bd08a88552b..3c097386c912453b2be6b98013ed05a86fe94b4b 100644
--- a/mo/web/user.py
+++ b/mo/web/user.py
@@ -3,7 +3,7 @@ from flask_wtf import FlaskForm
 import flask_wtf.file
 import os
 import secrets
-from sqlalchemy import or_
+from sqlalchemy import or_, and_
 from sqlalchemy.orm import joinedload
 from typing import Optional
 import werkzeug.exceptions
@@ -74,9 +74,8 @@ def user_contest(id: int):
 
     task_sols = (db.get_session().query(db.Task, db.Solution)
                  .select_from(db.Task)
-                 .outerjoin(db.Solution)
+                 .outerjoin(db.Solution, and_(db.Solution.task_id == db.Task.task_id, db.Solution.user == g.user))
                  .filter(db.Task.round == contest.round)
-                 .filter(or_(db.Solution.user_id == None, db.Solution.user == g.user))
                  .options(joinedload(db.Solution.final_submit_obj),
                           joinedload(db.Solution.final_feedback_obj))
                  .order_by(db.Task.code)