![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 24.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, napisałem skrypt na system loterii (system losuje z dodanych osób jedną i ta wylosowana dostaje nagrodę).
Zrobiłem dodawanie zgłoszeń. I teraz chce, że po zgłoszeniu się 100 osób system wylosuje 1 osobę. Graczy zapisanych mam w bazie. Takie mam tabele: id, name, acc_id. Jakiej funkcji użyć aby wylosować jedną osobę z tych 100 zapisanych w bazie? A i jeszcze jedno. Jak zrobić żeby już po wylosowaniu tej jednej osoby system wyczyścił całkowicie tą bazę w której znajdują się ci zapisani. Dodam że w kolumnie id mam auto_increment. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
@exood takie zapytanie jest bardzo mało wydajne (dla każdego wiersza tabeli losowana jest osobna liczba losowa + sortowanie całej tabeli).
Lepiej jest zrobić to w kilku krokach; 1. maxID := SELECT MAX( id ) FROM tabela 2. randNumber := rand( 1, maxID ) 3. randID := SELECT MIN( id ) FROM tabela WHERE id >= randNumber 4. SELECT * FROM tabela WHERE id = randID Jak się uprzeć, to można to zrobić w jednym zapytaniu z podzapytaniami |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 11:21 |