Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP-Lotterie gibt Probleme mit mehreren Gewinnern aus

Ich denke, Sie haben die falschen Speicherformate für Ihre ausgewählten Nummern gewählt. Der Standardansatz besteht darin, Binärwerte zu verwenden, bei denen das N-te Bit gesetzt ist, wenn die Zahl N gewählt wird.

Betrachten Sie dieses Beispiel:Der Benutzer wählt die Zahlen „2 4 5 9 11“. Das Setzen der entsprechenden Bits auf 1 ergibt '10100011010', was dezimal 1306 ist. Jetzt wählt die Lotterie "4 7 9 12 13", was '1100101001000' ==6472 ist Ergebnis:

SELECT BIT_COUNT(1306 & 6472)

dies sagt uns sofort, dass der Benutzer 2 richtige Picks hat. Genauso einfach können Sie "vollständige" Gewinner auswählen:

SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5

oder sortieren Sie die Tickets nach der Anzahl der richtigen Picks

SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC