sql >> Base de Datos >  >> RDS >> Mysql

Problemas de lotería php problemas de múltiples ganadores

Creo que ha elegido los formatos de almacenamiento incorrectos para los números seleccionados. El enfoque estándar es utilizar valores binarios que tienen N-th bit establecido si se elige el número N.

Considere este ejemplo:el usuario elige los números "2 4 5 9 11". Establecer los bits correspondientes en 1 da '10100011010' que es el decimal 1306. Ahora la lotería elige "4 7 9 12 13" que es '1100101001000' ==6472. Realice un AND bit a bit en ambos valores y cuente el número de bits establecidos en el resultado:

SELECT BIT_COUNT(1306 & 6472)

esto nos dice inmediatamente que el usuario tiene 2 selecciones correctas. Con la misma facilidad, puede seleccionar ganadores "completos":

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

u ordenar los boletos por el número de selecciones correctas

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