sql >> Databáze >  >> RDS >> Mysql

Problémy s loterií Php s více vítězi

Myslím, že jste pro vybraná čísla zvolili špatné formáty úložiště. Standardním přístupem je použití binárních hodnot, které mají nastaven N-tý bit, pokud je zvoleno číslo N.

Zvažte tento příklad:uživatel zvolí čísla "2 4 5 9 11". Nastavení odpovídajících bitů na 1 dává '10100011010', což je desetinné číslo 1306. Nyní loterie vybere "4 7 9 12 13", což je '1100101001000' ==6472. Proveďte bitový AND na obou hodnotách a spočítejte počet nastavených bitů výsledek:

SELECT BIT_COUNT(1306 & 6472)

to nám okamžitě říká, že uživatel má 2 správné tipy. Stejně snadno můžete vybrat „plné“ vítěze:

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

nebo seřaďte tipy podle počtu správných tipů

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


  1. Povolit databázovou poštu na serveru SQL Server (T-SQL)

  2. Porovnání běžných vzorů databázové infrastruktury

  3. Úložiště bajtového pole Mysql

  4. Získejte zaměstnance, kteří jsou po zvýšení platu pod průměrem