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