Ich arbeite derzeit an einem 1v1 Online-Spiel und ich stieß auf ein Problem beim Versuch, Spieler zu vergleichen.Mysql Matchmaking/Pairing
Ein Spieler, der will, wird in ein Matchmaking-Tabelle
id, Benutzer, Menge
Jetzt möchte ich für die bestmöglichen Paare Benutzer die Tabelle Matchmaking abzufragen setzen spielen (also Benutzer, die wollen für den gleichen Betrag zu spielen) Ich möchte auch Benutzer, die länger warten (kleinere ID), zuerst paaren.
Bisher habe ich diese Anfrage:
SELECT *
FROM matchmaking a, wpr_matchmaking b
WHERE a.user != b.user
AND a.amount = b.amount
ORDER BY a.id ASC , b.id ASC
LIMIT 0 , 30
Diese alle möglichen Paarungen gibt, so in einer Tabelle mit folgendem Inhalt:
id, user, amount
1, 1, 10
2, 2, 10
3, 3, 10
ich die Paare erhalten:
1,2
1,3
2,1
2,3
3,1
3,2
Während ich in diesem Fall nur 1,2 zurückgeben möchte.
Wie kann ich es mir nur jeden Benutzer höchstens einmal anzeigen lassen?
Edit: Hinzufügen der Bedingung ‚und A.id < b.id‘ auf die Abfrage um einen Faktor von 2 die Paarungen reduziert, aber es gibt immer noch zu viele.
verwenden Leider brauche ich alle Übereinstimmungen, nicht nur eine. Wenn es in der Tabelle 4 Benutzer gibt: 1,2,3,4, die alle für den gleichen Betrag spielen, möchte ich "1,2" und "3,4" erhalten –