Je vous suggère de mettre vos conditions de clause where dans votre instruction select et de renvoyer un "score" pour chaque enregistrement. Supprimez-le entièrement de votre clause where et cela peut vous donner un aperçu de la raison pour laquelle vous avez des enregistrements manquants s'ils sont renvoyés avec un score de 0.
Cas quand condition Alors 5quand condition puis 4Etc...sinon 0Fin de cas
Une fois que vous avez noté vos résultats, vous pouvez trier par ordre décroissant de votre score et prendre le premier par personne. Ou ajoutez des requêtes externes supplémentaires pour ne renvoyer que les lignes ayant le score maximum par personne.
Désolé d'avoir répondu depuis mon téléphone.