Jag skulle föreslå att du lägger dina where-klausulvillkor i ditt select-uttalande och returnerar en "poäng" för varje post. Ta bort den helt från din where-klausul så kan den ge dig insikt i varför du saknar poster om de returneras med 0 poäng.
Fall när villkor Sedan 5 när villkor sedan 4Etc...annars 0Slutfall
När du har fått dina resultat kan du beställa efter att dina poäng faller och ta det första per person. Eller lägg till ytterligare yttre frågor för att bara returnera de rader som har maxpoäng per person.
Ursäkta för att jag svarar från min telefon.