Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problèmes de loterie PHP problèmes multi-gagnants

Je pense que vous avez choisi les mauvais formats de stockage pour vos numéros sélectionnés. L'approche standard consiste à utiliser des valeurs binaires dont le N-ième bit est défini si le nombre N est choisi.

Considérez cet exemple :l'utilisateur choisit les nombres "2 4 5 9 11". Le réglage des bits correspondants sur 1 donne '10100011010' qui est décimal 1306. Maintenant, la loterie choisit "4 7 9 12 13" qui est '1100101001000' ==6472. Effectuez un ET binaire sur les deux valeurs et comptez le nombre de bits définis dans le résultat :

SELECT BIT_COUNT(1306 & 6472)

cela nous indique immédiatement que l'utilisateur a 2 choix corrects. Tout aussi facilement, vous pouvez sélectionner les gagnants "pleins" :

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

ou triez les billets par nombre de choix corrects

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