Chciałbym udzielić konkretnej odpowiedzi, ale potrzebuję pomocy w zrozumieniu twojego procesu myślowego...
Zaczynasz od napisania:
Ale potem piszesz dalej:
Dla mnie ta druga specyfikacja nie ma sensu w świetle pierwszej uwagi.
Imho, tak naprawdę chcesz, aby użytkownicy mieli taką samą liczbę możliwości głosowania na każdy samochód. A dokładniej, aby zagłosować na każdy samochód w porównaniu z innym samochodem.
Jeśli założysz, że zmienne (samochodowe) są niezależne, musisz liczyć, ile razy pojawił się wybór, a nie ile razy głosowano, i odpowiednio dostosować swój proces decyzyjny. To problem matematyczny, nie jest taki brzydki, a następnie można go przetłumaczyć na SQL na lepsze lub gorsze — zaryzykowałbym, że prawdopodobnie będzie gorzej.
Jeśli założysz, tak jak ja, że nie są niezależne, musisz również uwzględnić korelacje -- i zapamiętać, ile razy wymyśliły się nawzajem. Ponieważ, cóż, jest nieskończenie mała szansa, że nie wolisz tego Mercedesa niż tego Taty, tego Xinkai lub tego AvtoVAZ. Ale mając do wyboru ten sam Mercedes, BMW, Porsche i Ferrari, decyzja może nie być tak jednoznaczna.
Innymi słowy, twoja specyfikacja w ogóle nie odpowiada na problem w takiej postaci, w jakiej ją przedstawiłeś.
Obecnie błagam o zgodę na odpowiedź opublikowaną dwie godziny temu:wybierz je naprawdę losowo, a będziesz zadowolony bez dodatkowego kodu...
Na marginesie, jeśli twoje identyfikatory naprawdę nie mają przerw, wygeneruj cztery identyfikatory w php lub cokolwiek i pobierz je za pomocą in()
oświadczenie. Nie będziesz bardziej wydajny.